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

2022-05-26 17:06:07 字數 2127 閱讀 3804

在子程式中定義的變數稱為區域性變數,在程式的一開始定義的變數稱為全域性變數。

全域性變數作用域是整個程式,區域性變數作用域是定義該變數的子程式。

當全域性變數與區域性變數同名時:

在定義區域性變數的子程式內,區域性變數起作用;在其它地方全域性變數起作用。

name='charon'

def change_name():

print('我的名字',name)

change_name()

def change_name():

name='pluto'

print('我的名字',name)

change_name()

print(name)

def change_name():

global name

name='pluto'

print('我的名字',name)

change_name()

print(name)

結果:我的名字 charon

我的名字 pluto

charon

我的名字 pluto

pluto

能夠把變數私有化的只能是函式

global關鍵字

name='charon'

def change_name():

global name#將最外層的name='charon'拿過來了,宣告name就是那個全域性變數

name='pluto'#宣告了修改上面拿過來的全域性變數

print('我的名字',name)

def change01_name():

print("我的名字",name)

change_name()

change01_name()

結果:我的名字 pluto

我的名字 pluto

name='charon'

def change_name():

# global name

# name='pluto'

print('我的名字',name)

def change01_name():

print("我的名字",name)

change_name()

change01_name()

結果:我的名字 charon

我的名字 charon

name='charon'

def change_name():

global name

name='pluto'

print('我的名字',name)

def change01_name():

print("我的名字",name)

change01_name()

change_name()

結果:我的名字 charon

我的名字 pluto

規範:區域性變數全小寫,區域性變數全大寫 x

# 如果函式中有global關鍵字,變數本質上就是全域性的那個變數

name = "剛娘"

def weihou():

name = "陳卓"

def weiweihou():

nonlocal name # nonlocal,指定上一級變數,如果沒有就繼續往上直到找到為止

name = "冷靜"

weiweihou()

print(name)

print(name)

weihou()

print(name)

結果:剛娘冷靜

剛娘

name = "剛娘"

def weihou():

name = "陳卓"

def weiweihou():

global name #指定全域性變數,name= "剛娘"

name = "冷靜"

weiweihou()

print(name)#weiweihou內改變的name變數是全域性的,沒有改陳卓那個變數,所以weihou呼叫的仍然是name = "陳卓"

print(name)

weihou()

print(name)

結果:剛娘

陳卓冷靜

python 全域性變數

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

Python 全域性變數

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

python全域性變數

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