python函数中使用eval的疑惑?
问题如下:
class A:
...
o = A()
o.a = 0
def f(o,a):
print(eval(o+'.'+a))
f('o','a') # AttributeError: 'str' object has no attribute 'a'
但是:
class A:
...
o = A()
o.a = 0
print(eval('o'+'.'+'a')) # 0
这是为什么呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
跟名字空间有关,
eval()
官方文档是这样的:其中有:
globals
: 全局名字空间locals
: 局部名字空间两个可选属性.如果这两个都不写,
eval
默认只能识别标准的builtins
模块.你定义的
f()
函数的局部名字空间不包含实例o
: