考慮下面的代碼片段:Canopy的IPython中`global`關鍵字如何工作?
a = ''
def assign(letter):
global a
a = letter
如果我加載這個處於空閒並運行它(的Python 2.7.6),它表現爲預期:
>>> a
''
>>> assign('b')
>>> a
'b'
但在IPython中內置的雨棚編輯器(1.3.1)全局變量沒有被函數改變:
In [2]: a
Out[2]: ''
In[3]: assign('b')
In[4]: a
Out[4]: ''
這是預期的行爲嗎?如何在IPython中操作全局變量?
爲了記錄,我意識到全局變量的危險。我在嘗試重現類中討論的緩存例程時碰到了這個問題:https://www.youtube.com/watch?v=OgPS2ziCEaw
這是一個Canopy特定的問題,我無法在Ipython中複製它。 –
您是否可能從模塊中導入*代碼? – user2357112
不,我只是運行它。 (坦率地說,我不太確定當IDLE或Canopy要求他們在解釋器中運行一個模塊時會做什麼,但我很驚訝他們做了不同的事情!) –