1. 程式人生 > 實用技巧 >20201202-3 區域性變數與全域性變數作用域-1

20201202-3 區域性變數與全域性變數作用域-1

1-1
def test4(name,age=9999,*args,**kwargs):
    print(name)
    print(age)
    print(args)
    print(kwargs)
    logger("TEST4")

def logger(source):
    print("from %s" % source)

test4('itachi',age=21,sex='m',hobby='sweet_rice_ball')
--->
itachi
21
()
{'sex': 'm', 'hobby': 'sweet_rice_ball'}
from
TEST4 執行結果沒有問題
View Code
1-2 區域性變數
def change_name(name):
    print("before change",name)
    name = "Uchiha Itachi"
    print("after change",name)

name = 'itachi'
change_name(name)
--->
before change itachi
after change Uchiha Itachi

# 區域性變數,只在函式裡生效;這個函式就是這個變數的作用域
View Code
1-3
school = '
zxcv edu' def change_name(name): school = 'Mage Linux' print('before change',name,school) name = 'Uchiha Itachi' age = 23 print('after change',name) print(school) name ='itachi' change_name(name) print(name) ---> zxcv edu before change itachi Mage Linux after change Uchiha Itachi itachi
# 全域性變數,在函式中是改不了的,函式作用域只在小函式中生效 # 雖然叫同樣的名字,但是沒關係 # 函式中預設,區域性變數無法修改全域性變數
View Code
1-4 如果想在區域性變數中修改全域性變數,應該怎麼辦? 宣告 global
school = 'zxcv edu'

def change_name(name):
    global school     # 在函式中修改全域性變數
    school = 'Mage Linux'
    print('before change',name,school)
    name = 'Uchiha Itachi'
    age = 23
    print('after change',name)

name ='itachi'
change_name(name)
print(name)
print('school:',school)
--->
before change itachi Mage Linux
after change Uchiha Itachi
itachi
school: Mage Linux

# 這種情況是可以修改的
View Code