2014-09-19 32 views
-1

我在閱讀How can you dynamically create variables in Python via a while loop?,我不明白「動態」一詞。「動態創建變量」是什麼意思?

它是否指的是在創建pyc之後應該創建變量的事實?

在下面的代碼:

x = 3 
globals()['y'] = 4 

y動態創建?

+0

您可以在運行時選擇變量的名稱('y')。 'globals()[var_name] ...' – falsetru 2014-09-19 14:01:09

+3

請注意,這幾乎總是**一個非常非常糟糕的主意。 – 2014-09-19 14:14:20

回答

0

是的,在你的例子中y是動態創建的。嚴格地說,它與在.pyc文件之前或之後創建它無關。它與它被創建爲一些正在運行的其他代碼的副作用有關。

也可以用其他方式動態創建變量。例如,EXEC:

exec("x=42") 
print(x) 

雖然這樣的事情都是可能的,它們一般應避免,因爲它使你的代碼更難理解。

+1

在這種情況下,至少變量的名稱是硬編碼的,理論上講,解釋器可以將對'exec'的調用優化爲'x = 42'。當你意識到傳遞給exec的字符串可能是用戶輸入的結果時,動態方面會出現:name = input(「選擇一個變量名稱」); EXEC( 「{0} = 42」 .format(名))'。現在,程序運行之前,程序中有一個變量名*完全*未知。這引發了一個問題:「你的代碼將如何使用這樣一個變量?」。 (答案:有困難。) – chepner 2014-09-19 14:15:23