2015-12-12 178 views
2

全局變量不能改變

>>> foo(12) 
>>> a 
42 

只有當我將該塊輸入到控制檯時,它才能真正起作用。

>>> foo(12) 
>>> a 
12 

這是爲什麼?

+0

什麼是NUM到底是什麼?而且你不會回報a的價值,你期望什麼? – Inkblot

+0

@Inkblot我加了一些額外的信息 – binaryfunt

+0

能'a'生活在加載了'import'的foo.py文件中嗎?如果是的話,請說明你是如何導入一切的。 –

回答

3

問題是您正在更改模塊級別的變量a。 我假設你只需從該模塊導入所有內容。

讓文件mymodule.py包含代碼

a = 42 

def foo(num): 
    global a 
    a = num 

現在讓我們運行一個解釋對話:

>>> from mymodule import * 
>>> a 
42 
>>> foo(12) 
>>> a 
42 
>>> import mymodule 
>>> mymodule.a 
12 
+2

好的趕上!仍然試圖猜測可以做些什麼......無論如何,'從模塊導入*'通常是問題的根源,因爲除了設計得很仔細的模塊之外,它將模塊化分解成幾部分。 –

+0

我正在使用'%run'魔術命令。這似乎與'from ... import *'類似 – binaryfunt