變量的作用域與其定義的方式有關(guān):局部變量:變量在函數(shù)內(nèi)部定義,則變量的作用域在函數(shù)內(nèi)部全局變量:變量在函數(shù)外部定義的,則變量的作用域是全局
global:用來在函數(shù)或其他局部作用域中,聲明全局變量。(作用于全局)nonlocal:用來在函數(shù)或其他作用域中,聲明外層(非全局)變量。(作用于局部)
使用global情況:全局變量可以在函數(shù)內(nèi)部訪問,但是不能改變?nèi)绻诤瘮?shù)內(nèi)部想修改全局變量,可以用global來修飾變量局部變量只能在局部進(jìn)行訪問和修改。如果在函數(shù)外部,想訪問局部變量,也可以用global,將局部變量聲明為全局變量使用nonlocal的情況:當(dāng)里層局部,需要修改外層局部時(shí),需要使用nonlocal。(如嵌套函數(shù))總結(jié):global:函數(shù)中,需要修改全局變量時(shí),用globalnonlocal:當(dāng)里層局部,需要修改外層局部時(shí),需要使用nonlocal。(局部調(diào)用局部,使用nonlocal)
'''
全局變量可以在函數(shù)內(nèi)部訪問,但是不能改變
如果在函數(shù)內(nèi)部想修改全局變量,可以用global來修飾變量
'''
a=10#全局變量
deftest1():
b=5#局部變量
print('局部訪問全局變量a:',a)#局部可以訪問,全局變量
#a+=1#全局變量可以在函數(shù)內(nèi)部訪問,但是不能改變
deftest2():
globala#全局聲明
a+=1
print('內(nèi)部修改全局變量a:',a)
deftest3():#global只對(duì)當(dāng)前函數(shù)起作用
#globala
a+=1
print('teat3修改全局a',a)
'''
局部變量只能在局部進(jìn)行訪問和修改。
如果在函數(shù)外部,想訪問局部變量,也可以用global,將局部變量聲明為全局變量
'''
deftest4():
globalb
b=4
b+=1
a=21
print('局部變量b:',b)
##使用nonlocal的情況
#內(nèi)嵌函數(shù)
deftest5():
c=2
print('局部外層c',c)
deftest6():
d=5
print('局部里層d',d)
test6()
#nonlocal
c=11
deftest7():
c=2#聲明外層(非全局)變量
print('局部外層c',c)
deftest8():
d=5
print('局部里層d',d)
nonlocalc
#globalc
c+=1#當(dāng)里層局部,需要修改外層局部時(shí)
print('當(dāng)里層局部,需要修改外層局部C',c)
test8()
以上內(nèi)容為大家介紹了Python函數(shù)內(nèi)變量的作用域,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。