我一直試圖弄清楚 IPython 如何與使用 %run 運行的代碼中定義的變量進行交互。我對 %run 的理解是,它運行給定的 python 文件,然后將其所有數據導入到當前 IPython 筆記本的命名空間中。但是,我遇到了以下問題,我不確定如何根據該描述進行解釋。假設我們有以下名為“foo.py”的簡單程序。foo = 5def printVar(): print foo def changeVar(): global foo foo = foo + 1如果我們運行“foo.py”并向 IPython 詢問 的值,foo我們將得到以下結果。In [1]: %run "foo.py"In [2]: fooOut[2]: 5如果我們運行changeVar()然后再次詢問 IPython 的值,foo我希望 IPython 返回6,但實際上,我們得到以下結果。In[3]: changeVar()In[4]: fooOut[4]: 5然而,當我們跑步時,printVar()我們得到了。In[5]: printVar()6那么這是怎么回事呢?從表面上看,我們似乎陷入了矛盾。我一直想知道這是否是一個類似于變量作用域的問題。局部變量可以與全局變量具有相同的名稱,但具有不同的值,那么這里是否發生了類似的情況?如果這是真的,那么 IPython 似乎不會更新它運行foo時的版本。changeVal()我正在 Enthought Canopy 中運行 Python 2.7.13不管怎樣,希望我在這里錯過了一些簡單的東西。謝謝!
添加回答
舉報
0/150
提交
取消