global: 在區域性訪問全域性中的內容
nonlocal: 在區域性尋找外層函式中離他最近的那個變數
globals() 檢視全域性中的內容
locals() 檢視當前作用域中的內容
1、global的使用:
#全域性變數本身就是不安全的, 不能隨意修改, 可以使用閉包
a = 10
deffunc():
""":return:
global的作用:
1. 可以把全域性中的內容引入到函式內部
2. 在全域性建立乙個變數
"""global
a a += 10
(a)func()
print(a)
執行結果為:
2020
2、nonlocal的使用:
defouter():
a = 10
#在inner中改變a的值
definner():
#尋找外層函式中離他最近的那個變數
nonlocal a
a = 20
(a)
(a) inner()
outer()
執行結果:
1020
3、globals和locals的使用:
deffn():
a = 10
defgn():
b = 20gn()
(locals())
fn()
(locals())
print(globals())
執行結果:
, '__builtins__
': '
builtins
' (built-in)>, '
__file__
': '
d:/learnpj/oldboy/day11/global和nonlocal.py
', '
__cached__
': none, '
i': 10, '
fn': }
, '__builtins__
': '
builtins
' (built-in)>, '
__file__
': '
d:/learnpj/oldboy/day11/global和nonlocal.py
', '
__cached__
': none, '
i': 10, '
fn': }
練習題:
a = 1deffun_1():
a = 2
deffun_2():
global
a a = 3
deffun_3():
a = 4
(a)
(a) fun_3()
(a)
(a) fun_2()
(a)print
(a)fun_1()
print(a)
a = 1deffun_1():
a = 2
deffun_2():
nonlocal a
a = 3
deffun_3():
a = 4
(a)
(a) fun_3()
(a)
(a) fun_2()
(a)print
(a)fun_1()
print(a)
以上兩道練習題的輸出結果分別是什麼,請自行理解並輸出一下!
python中locals和globals函式
首先,是關於名字空間的乙個名詞解釋。是枯燥,但是很重要,所以要耐心些。python使用叫做名字空間的東西來記錄變數的軌跡。名字空間只是乙個 字典,它的鍵字就是變數名,字典的值就是那些變數的值。實際上,名字空間可以象python的字典一樣進行訪問,一會我們就會看到。在乙個python程式中的任何乙個地...
php 中global關鍵字和 GLOBALS用法
首先我們先看一段 a 1 global scope function test test 這個指令碼不會有任何輸出,因為 echo 語句引用了乙個區域性版本的變數 a 而且在這個範圍內,它並沒有被賦值。你可能注意到 php 的全域性變數和 c 語言有一點點不同,在 c 語言中,全域性變數在函式中自動...
Python中global與nonlocal 宣告
如下 a 10 def foo a 100 執行foo 結果 a 還是10 函式中對變數的賦值,變數始終繫結到該函式的區域性命名空間,使用global 語句可以改變這種行為。a 10 def foo global a a 100 a 10 foo a 100 解析名稱時首先檢查區域性作用域,然後由內...