轉自 (1條消息) python里使用exec函數,報錯NameError: name ‘XXX‘ is not defined的解決辦法_qiongtaiyu的博客-CSDN博客
大半年前,我寫代碼的時候,在自己定義的函數里使用exec還可以正確運行,但這兩天又用到這個函數,同樣的用法卻無法正確運行了。
例子如下:
報錯:NameError: name 'f' is not defined。
在網上查找原因,發現是因為exec函數的作用域的問題,這個函數現在有兩個參量globals() 和locals()。默認情況下,exec是作用於局部范圍的,因為我是在自己定義的子函數里使用exec函數,所以就會報錯。
解決方法是修改為下圖,在子函數中使用時,在后面增加globals()。