我在閱讀How can you dynamically create variables in Python via a while loop?,我不明白「動態」一詞。「動態創建變量」是什麼意思?
它是否指的是在創建pyc
之後應該創建變量的事實?
在下面的代碼:
x = 3
globals()['y'] = 4
是y
動態創建?
我在閱讀How can you dynamically create variables in Python via a while loop?,我不明白「動態」一詞。「動態創建變量」是什麼意思?
它是否指的是在創建pyc
之後應該創建變量的事實?
在下面的代碼:
x = 3
globals()['y'] = 4
是y
動態創建?
是的,在你的例子中y
是動態創建的。嚴格地說,它與在.pyc文件之前或之後創建它無關。它與它被創建爲一些正在運行的其他代碼的副作用有關。
也可以用其他方式動態創建變量。例如,EXEC:
exec("x=42")
print(x)
雖然這樣的事情都是可能的,它們一般應避免,因爲它使你的代碼更難理解。
在這種情況下,至少變量的名稱是硬編碼的,理論上講,解釋器可以將對'exec'的調用優化爲'x = 42'。當你意識到傳遞給exec的字符串可能是用戶輸入的結果時,動態方面會出現:name = input(「選擇一個變量名稱」); EXEC( 「{0} = 42」 .format(名))'。現在,程序運行之前,程序中有一個變量名*完全*未知。這引發了一個問題:「你的代碼將如何使用這樣一個變量?」。 (答案:有困難。) – chepner 2014-09-19 14:15:23
您可以在運行時選擇變量的名稱('y')。 'globals()[var_name] ...' – falsetru 2014-09-19 14:01:09
請注意,這幾乎總是**一個非常非常糟糕的主意。 – 2014-09-19 14:14:20