函式中的global和nonlocal

2021-09-22 18:49:24 字數 981 閱讀 1500

區域性作用域對全域性作用域的變數(此變數只能是不可變的資料型別)只能進行引用,而不能進行改變,只要改變就會報錯,但是有些時候,我們程式中會遇到區域性作用域去改變全域性作用域的一些變數的需求,這怎麼做呢?這就得用到關鍵字global:

global第乙個功能:在區域性作用域中可以更改全域性作用域的變數。

count = 1

def search():

global count

count = 2

search()

print(count)

利用global在區域性作用域也可以宣告乙個全域性變數。

def func():

global a

a = 3

func()

print(a)

所以global關鍵字有兩個作用:

1,宣告乙個全域性變數。

2,在區域性作用域想要對全域性作用域的全域性變數進行修改時,需要用到 global(限於字串,數字)。

nonlocal是python3x新加的功能,與global用法差不多,就是在區域性作用域如果想對父級作用域的變數進行改變時,需要用到nonlocal。

def add_b():

b = 42

def do_global():

b = 10

print(b)

def dd_nonlocal():

nonlocal b

b = b + 20

print(b)

dd_nonlocal()

print(b)

do_global()

print(b)

add_b()

nonlocal的總結:

1,不能更改全域性變數。

2,在區域性作用域中,對父級作用域(或者更外層作用域非全域性作用域)的變數進行引用和修改,並且引用的哪層,從那層及以下此變數全部發生改變。

Python 關鍵字global和nonlocal

區域性要對全域性變數修改,應在區域性宣告該全域性變數 count 0def global test global count count 1print count global test 以上輸出為 1注意 global會對原來的值 全域性變數 進行相應的修改 count 0def global t...

php 中global關鍵字和 GLOBALS用法

首先我們先看一段 a 1 global scope function test test 這個指令碼不會有任何輸出,因為 echo 語句引用了乙個區域性版本的變數 a 而且在這個範圍內,它並沒有被賦值。你可能注意到 php 的全域性變數和 c 語言有一點點不同,在 c 語言中,全域性變數在函式中自動...

php中global與 GLOBAL的用法及區別

php中global 與 globals 差別 原本覺得global和 globals除了寫法不一樣覺得,其他都一樣,可是在實際利用中發現2者的差別還是很大的 先看下面的例子 php 例子1 function test global function test globals var1 5 var2...