全局變量我想修改一個全局變量的一個函數在Python 2.7更改在Python
x = 0
def func():
global x
x = 2
如果我加載在解釋這段代碼,然後運行FUNC(),X保持爲0怎麼辦我修改函數內x的值?
編輯:這裏是解釋器和源代碼的截圖。我不知道爲什麼它適用於其他人,而不是我。 http://img18.imageshack.us/img18/9567/screenshotfrom201304222.png
全局變量我想修改一個全局變量的一個函數在Python 2.7更改在Python
x = 0
def func():
global x
x = 2
如果我加載在解釋這段代碼,然後運行FUNC(),X保持爲0怎麼辦我修改函數內x的值?
編輯:這裏是解釋器和源代碼的截圖。我不知道爲什麼它適用於其他人,而不是我。 http://img18.imageshack.us/img18/9567/screenshotfrom201304222.png
這是一個非常有趣的情況。當我從一個解釋器from mytest import *
跑到你的代碼中,我遇到了同樣的問題:
>>> from mytest import *
>>> x
0
>>> func()
>>> x
0
然而,當我只是做了import mytest
,並從那裏運行它:
>>> import mytest
>>> mytest.x
0
>>> mytest.func()
>>> mytest.x
2
原來罰款!究其原因,筆者認爲,來自一個線http://docs.python.org/2/reference/simple_stmts.html#the-global-statement:
在全局聲明中列出的名字不能被定義爲正式 參數或在for循環的控制目標,類定義,功能 定義,或進口聲明。
看起來像是因爲它是導入語句中的一個參數(通過全部導入),global
有問題。你需要import *
,還是你可以簡單地導入模塊?
這適用於我。你確定你已經調用過這個函數嗎?我粘貼你的代碼,調用'func()'和'print x'。我得到2. – bbayles 2013-04-23 02:35:37
你在說什麼?它仍然有效。 – xxmbabanexx 2013-04-23 02:35:48
你可以嘗試在'func()'中打印所有的'globals()'來查看是否包含'x'。 – 2013-04-23 04:39:14