Python的全域性變數和區域性變數

2021-08-19 22:24:47 字數 2048 閱讀 6928

a = "python"

# 函式外定義的a為全域性變數

deffunc1():

print (a)

deffunc2():

b = "小黑屋"

# 函式內定義的b為區域性變數

print (b)

func1()          # 執行函式func1

func2()          # 執行函式func2

print(b)         # 輸出函式func2中的區域性變數b

>>python         # 函式func1執行後輸出全域性變數a

>>小黑屋          # 函式func2執行後輸出區域性變數b

# 在函式外輸出區域性變數b,出現了未定義的報錯

traceback (most recent call last):

file "", line 1, in

print(b)

nameerror: name 'b' is not

defined

a = "python"

deffunc1():

a = '小黑屋'

print (a)

deffunc2():

print(a)

func1()

func2()

print (a)

>>小黑屋

>>python

>>python

a = 6         # 定義全域性變數a

deffunc():

a = a * 3

print (a)

func()

>>traceback (most recent call last):

file "", line 1, in

func()

file "", line 2, in func

a = a * 3

unboundlocalerror: local variable 'a' referenced before assignment

a = a * 3

print (a)

>>

18

def

func

():print (a)

print(a)        

>>nameerror: name 'a'

isnot defined   # 你在逗我嗎?報錯了?

func()

print (a)                              # 咦,怎麼又不報錯了

>>python小黑屋

>>python小黑屋

def

func1():

a = "python小黑屋"

deffunc2():

print (a)

return func2()

func1()

>>python小黑屋

def

func1

():a = "python小黑屋"

deffunc2

():nonlocal a   # 使用nonlocal不是區域性變數

a = a * 3

# 這個是上次字串忘記說的,字串*數字是重複字串

print (a)

return func2()

func1()

>>python小黑屋python小黑屋python小黑屋

python學習資源/有趣的python文章/python學習筆記

python全域性變數和區域性變數

總體來說跟c 差不多 有一點不一樣的是,當乙個全域性變數在某一函式中出現了賦值之後,函式中使用的是相同名字的區域性變數,而全域性變數不受影響 如a 100 def f a 100 print a f 這裡,函式內部的變數名如果第一次出現,且出現在 前面,即被視為定義乙個區域性變數。而函式中的a是乙個...

python全域性變數和區域性變數

當你在函式定義內宣告變數的時候,它們與函式外具有相同名稱的其他變數沒有任何關係,即變數名稱對於函式來說是 區域性 的。這稱為變數的 作用域 所有變數的作用域是它們被定義的塊,從它們的名稱被定義的那點開始。使用區域性變數 usr bin python filename func local.py de...

Python全域性變數和區域性變數

定義在函式內部的變數擁有乙個區域性作用域,定義在函式外的擁有全域性作用域。區域性變數只能在其被宣告的函式內部訪問,而全域性變數可以在整個程式範圍內訪問。呼叫函式時,所有在函式內宣告的變數名稱都將被加入到作用域中。如下例項 total 0 這是乙個全域性變數 可寫函式說明 def sum arg1,a...