python 全域性變數

2021-09-10 18:43:50 字數 891 閱讀 7038

1. 在函式內部引用全域性的變數,有同名區域性變數

疏忽了就會出現錯誤,比如:

#file1.py

var = 1

def fun():

print var

var = 200

print fun()

#file2.py

var = 1

def fun():

var = var + 1

return var

print fun()

這兩個函式都會報錯unboundlocalerror: local variable 'var' referenced before assignment

原因:在未被賦值之前引用的錯誤。因為在函式的內部,直譯器探測到var被重新賦值了,所以var成為了區域性變數,但是在沒有被賦值之前就想使用var,便會出現這個錯誤。

解決:在函式內部新增 globals var 但執行函式後全域性的var也會被修改。

2. 區域性變數同模組某函式同名

locals() 和 globals()

global 和 globals() 是不同的,global 是關鍵字用來宣告乙個區域性變數為全域性變數。globals() 和 locals() 提供了基於字典的訪問全域性和區域性變數的方式

比如:如果函式1內需要定義乙個區域性變數,名字另乙個函式2相同,但又要在函式1內引用這個函式2。

def var():

pass

def f2():

var = 'just a string'

f1 = globals()['var']

print var

return type(f1)

print f2()

# just a string

# 原文: 

python 全域性變數

應該盡量避免使用全域性變數。不同的模組都可以自由的訪問全域性變數,可能會導致全域性變數的不可預知性。對全域性變數,如果程式設計師甲修改了 a的值,程式設計師乙同時也要使用 a,這時可能導致程式中的錯誤。這種錯誤是很難發現和更正的。全域性變數降低了函式或模組之間的通用性,不同的函式或模組都要依賴於全域...

Python 全域性變數

應該盡量避免使用全域性變數。不同的模組都可以自由的訪問全域性變數,可能會導致全域性變數的不可預知性。對全域性變數,如果程式設計師甲修改了 a的值,程式設計師乙同時也要使用 a,這時可能導致程式中的錯誤。這種錯誤是很難發現和更正的。全域性變數降低了函式或模組之間的通用性,不同的函式或模組都要依賴於全域...

python全域性變數

python中global關鍵字主要作用是宣告變數的作用域。在c語言中,由於變數一定是先宣告,後使用,所以我們可以清楚的知道,現在使用的變數是全域性還是區域性,比如 cpp view plain copy inta 5 void test void void test1 void void main...