Python eval()和exec()函数
2021-01-30 17:13
标签:范围 eval 区别 print mil UNC string 直接 全局 相同点:eval()和exec()在一定命名空间范围内执行字符串形式的代码 不同点:exec()无返回值;eval()有返回值 格式: eval(expression, globals=None, locals=None, /) 参数含义: expression:需要执行的字符串命令 globals:全局命名空间,即 expression 可以使用全局命名空间中的函数 local:局部命名空间(当局部命名空间与全局命名空间重复时,以局部命名空间为准) globals用法: 运行结果: 可以看到系统在 dic 中生成了两个新的 key,分别是 a 和 __builtins__。其中,a 为执行语句生成的变量,系统将其放到指定的命名空间;__builtins__ 是系统加入的内置 key。 local用法: 运行结果: 可以看出取到了a=6,b=100,c=6,因为在全局命名空间g与局部命名空间t中‘b‘重复,所以重复值取到局部空间t中的b=100 eval()和exec()的区别: 运行结果: tips:eval()所需执行的字符串命令必须是要有返回值的!如:a=eval("a = 2")会报SyntaxError错误 Python eval()和exec()函数 标签:范围 eval 区别 print mil UNC string 直接 全局 原文地址:https://www.cnblogs.com/lishanstudy/p/12820273.html
exec(expression, globals=None, locals=None, /)dic={} #定义一个字典
dic[‘b‘] = 3 #在 dic 中加一条元素,key 为 b
print (dic.keys()) #先将 dic 的 key 打印出来,有一个元素 b
exec("a = 4", dic) #在 exec 执行的语句后面跟一个作用域 dic
print(dic.keys()) #exec 后,dic 的 key 多了一个
dict_keys([‘b‘])
dict_keys([‘b‘, ‘__builtins__‘, ‘a‘])
a=10
b=20
c=30
g={‘a‘:6, ‘b‘:8}
t={‘b‘:100, ‘c‘:10}
print(eval(‘a+b+c‘, g, t))
116
a = 1
exec("a = 2") #相当于直接执行 a=2
print(a)
a = exec("2+3") #相当于直接执行 2+3,但是并没有返回值,a 应为 None
print(a)
a = eval(‘2+3‘) #执行 2+3,并把结果返回给 a
print(a)
2
None
5
文章标题:Python eval()和exec()函数
文章链接:http://soscw.com/index.php/essay/49167.html