我查看了SO上的無數'Python exec'線程,但找不到解決我的問題的線程。非常抱歉,如果這之前已經問過。這裏是我的問題:爲什麼Python 3更改爲exec會中斷此代碼?
# Python 2.6: prints 'it is working'
# Python 3.1.2: "NameError: global name 'a_func' is not defined"
class Testing(object):
def __init__(self):
exec("""def a_func():
print('it is working')""")
a_func()
Testing()
# Python 2.6: prints 'it is working'
# Python 3.1.2: prints 'it is working'
class Testing(object):
def __init__(self):
def a_func():
print('it is working')
a_func()
Testing()
作爲標準功能定義在兩個Python版本的作品,我假設的問題必須是一個變化的方式EXEC作品。我讀了API文檔的2.6和3 exec
和也可以參考「什麼是新的Python 3.0」頁面,看不出有任何理由代碼將打破。
這似乎是很可能使任何人必須在5年內維持它的代碼。 – Amber
我認爲這是一個比實際使用的代碼更包含的例子。我聽說'exec'和'eval'在語言中佔有一席之地。 –
@Amber也許我是個虐待狂? –