为什么"a+b",{'a':100,'b':100} 是一个有效的表达式
在尝试eval的用法时看到这类写法:
print (eval("a+b",{'a':100,'b':100}))
为什么这里 字典当成参数赋值直接向”a+b” 传递?
基本的语法语句里面看到不这样的赋值。
不解。
谢谢!
内置函数
eval
定义为所以, 在这里提供给
eval
函数的两个参数为"a+b"
才是 expression 表达式的字符串{'a':100,'b':100}
则为 globals 全局字典, 作为全局命名空间;也就是使用 globals 全局字典中的变量值来解析 expression 表达式的字符串.
细节请参考 eval
注: 如果不考虑函数
eval
,"a+b", {'a':100,'b':100}
也是一个合法的表达式, 相当于一个tuple("a+b", {'a':100,'b':100})
.