變量的作用域與其定義的方式有關:局部變量:變量在函數內部定義,則變量的作用域在函數內部全局變量:變量在函數外部定義的,則變量的作用域是全局
global:用來在函數或其他局部作用域中,聲明全局變量。(作用于全局)nonlocal:用來在函數或其他作用域中,聲明外層(非全局)變量。(作用于局部)
使用global情況:全局變量可以在函數內部訪問,但是不能改變如果在函數內部想修改全局變量,可以用global來修飾變量局部變量只能在局部進行訪問和修改。如果在函數外部,想訪問局部變量,也可以用global,將局部變量聲明為全局變量使用nonlocal的情況:當里層局部,需要修改外層局部時,需要使用nonlocal。(如嵌套函數)總結:global:函數中,需要修改全局變量時,用globalnonlocal:當里層局部,需要修改外層局部時,需要使用nonlocal。(局部調用局部,使用nonlocal)
'''
全局變量可以在函數內部訪問,但是不能改變
如果在函數內部想修改全局變量,可以用global來修飾變量
'''
a=10#全局變量
deftest1():
b=5#局部變量
print('局部訪問全局變量a:',a)#局部可以訪問,全局變量
#a+=1#全局變量可以在函數內部訪問,但是不能改變
deftest2():
globala#全局聲明
a+=1
print('內部修改全局變量a:',a)
deftest3():#global只對當前函數起作用
#globala
a+=1
print('teat3修改全局a',a)
'''
局部變量只能在局部進行訪問和修改。
如果在函數外部,想訪問局部變量,也可以用global,將局部變量聲明為全局變量
'''
deftest4():
globalb
b=4
b+=1
a=21
print('局部變量b:',b)
##使用nonlocal的情況
#內嵌函數
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#當里層局部,需要修改外層局部時
print('當里層局部,需要修改外層局部C',c)
test8()
以上內容為大家介紹了Python函數內變量的作用域,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。