python - 如何创建生成其他代码的代码
问题描述
自从几个月前我开始学习 python 以来,我一直着迷于如何使用简单的代码来完成复杂的任务。
所以,我一直在尝试做这样的事情,
list = [1,2,3,4]
statement = ''
if len(list) > 4:
statement = '[x for x in list if x%%2 == 0]'
else:
//do something else
我知道这行不通,因为上面的语句只是一个字符串,但我希望你明白我想要做什么,并希望你能建议我应该如何去做。
解决方案
我认为您正在寻找 eval 函数:
Python eval() eval() 方法解析传递给该方法的表达式,并在程序中运行 python 表达式(代码)。
简单来说,eval() 方法在程序中运行 python 代码(作为参数传递)。
eval()的语法是:
eval(expression, globals=None, locals=None)
eval() 参数: eval() 采用三个参数:
-expression - 此字符串作为 Python 表达式进行解析和评估
-globals (可选) - 字典
-locals(可选)- 一个映射对象。字典是 Python 中标准且常用的映射类型。全局变量和局部变量的使用将在本文后面讨论。
eval() 的返回值
eval() 方法返回从表达式评估的结果。
例子:
x = 1 print(eval('x + 1'))
list = [1,2,3,4,5]
statement = ''
if len(list) > 4:
statement = '[x for x in list if x%2 == 0]'
else:
pass
print(eval(statement)) # [2, 4]
推荐阅读
- dns - 使用 nsupdate 在 Active Directory 上创建 Ansible 和 Terraform DNS
- php - 组合两个数组二一并设置键
- java - 从 Jersey WriterInterceptor 获取 url
- python - python:argparse,“前缀”或参数前的命令
- r - ANOVA 的奇怪结果:三向交互的 p 值正好为 1
- python - 如何使用数据框在python中生成唯一的服务ID号
- opencv - 在 OpenCV 中为 cv2.stereoCalibrate 使用哪个对象?
- android - 如何在 android Kotlin 中获取以前的活动
- python - 使用 Numpy 准备 .npy 数据作为 CNN 的输入
- javascript - 如果我的输入标签中的 id 是由 php/mysql 输出生成的,我如何将一个 Id 传递给 JavaScript (getElementByID)?