这段代码的执行符合预期:
def Aaa(): print("hi")
def Bbb(): Aaa()
Bbb()
但是,如果将其转换为一行exec()并运行:
exec('def Aaa(): print("hi")\ndef Bbb(): Aaa()\nBbb()')
出现错误:
File "<string>", line 3, in <module>
File "<string>", line 2, in Bbb
NameError: name 'Aaa' is not defined
为什么?
global Aaa;如果在调用之前添加就不会出错Aaa()。但这exec不是和“正常”执行一样吗?
是什么阻碍了在表演的背景下Bbb()观察?Aaa()exec()
如果取消注释之一,则不会出现错误。
看来我进错论坛了。抱歉,我以为这只是一个 python 问题。


对于我的具体情况,添加参数解决了问题,并且错误不再出现。
然而,这一切对我来说如何发挥作用仍然是一个未知的谜。