1. python 全局變數怎麼用
在python中,全局變數一般有兩種使用方式:
第一種:是在一個單獨的模塊中定義好,然後在需要使用的全局模塊中將定義的全局變數模塊導入。
第二種:直接在當前的模塊中定義好,然後直接在本模塊中通過global聲明,然後使用具體的方法如下所示:
第一種:
復制代碼
SOLR_URL='http://solr.org'
def tt():
global SOLR_URL
SOLR_URL=SOLR_URL+'#aa'
if __name__=='__main__':
tt()
print SOLR_URL
#輸出:
http://solr.org#aa
復制代碼
PS:在此種用法中,如果我們在函數tt中不使用global 聲明全局變數SOLR_URL,其實也可以使用,但是此時應該是作為一個內部變數使用,由於沒有初始值,因此報錯Python查找變數是順序是:先局部變數,再全局變數復制代碼
SOLR_URL='http://solr.org'
def tt():
#global SOLR_URL
SOLR_URL=SOLR_URL+'#aa'
if __name__=='__main__':
tt()
print SOLR_URL
#輸出:
SOLR_URL=SOLR_URL+'#aa'
UnboundLocalError: local variable 'SOLR_URL' referenced before assignment復制代碼
第二種:
global_list.py
GLOBAL_A='hello'
GLOBAL_B='world'
test.py
復制代碼
import global_list
def tt():
print global_list.GLOBAL_A
if __name__=='__main__':
tt()
#輸出:
hello
2. python 如何定義全局變數
接下來,我們把值2賦給x。x是函數的局部變數。所以,當我們在函數內改變x的值的時候,在主塊中定義的x不受影響。在最後一個print語句中,我們證明了主塊中的x的值確實沒有受到影響。
使用global語句
如果你想要為一個定義在函數外的變數賦值,那麼你就得告訴python這個變數名不是局部的,而是
全局
的。我們使用global語句完成這一功能。沒有global語句,是不可能為定義在函數外的變數賦值的。
你可以使用定義在函數外的變數的值(假設在函數內沒有同名的變數)。然而,我並不鼓勵你這樣做,並且你應該盡量避免這樣做,因為這使得程序的讀者會不清楚這個變數是在哪裡定義的。使用global語句可以清楚地表明python函數變數是在外面的塊定義的。
3. python 函數外面的變數能在裡面使用嗎
這涉及到變數的生命周期問題,一般的,在函數裡面聲明的變數在函數外是不起作用的。
一個比較簡單的解決辦法是你在函數外就先聲明這個變數,聲明成全局變數。然後在函數裡面進行操作和賦值。
最後就能在函數外獲取變數的值了。例如:
123456 x = 0def a(): x = 2if __name__ == '__main__': a() print x
最終x列印出來的結果就是2