1. 程式人生 > >python全域性引數與區域性引數

python全域性引數與區域性引數

一:全域性引數與區域性引數的典型舉例

①:在函式外定義name並在函式內定義name

>>> name='louis'
>>> def fun():
    name='wedi'
    print(name)
>>> fun()
wedi
>>> print(name)
louis
>>> 

②:在函式外定義name並在函式內直接引用

>>> name='louis'
>>> def fun():
    print(name)
>>> fun()
louis
>>> print(name) louis

由上第一個例子可知,函式雖然對name重新賦值,但並沒有覆蓋函式前已經定義了的name,故函式內的name為區域性引數,由第二個例子可知全域性引數可被函式直接引用。綜上可知,函式呼叫的過程為,先查詢區域性內是否定義,如有則直接使用,否則向上一級查詢。直至找到為止,且區域性重新賦值後,該值只能在函式內使用,並不影響全域性引數。

二:就要區域性修改,同時全域性也跟著變

>>> name='louis'
>>> def fun():
    global name
    name='wedi
' print(name) >>> fun() wedi >>> print(name) wedi

由上可知,只需要加global關鍵字,name就是全域性變數。同時需要注意的是,name='wedi',不可在global關鍵字前。

三:在函式內對全域性可變變數追加與刪除

>>> name=['louis','james']
>>> def fun():
    name.append('barry')
    print(name)
>>> fun()
['louis', 'james
', 'barry'] >>> print(name) ['louis', 'james', 'barry']

其實變數就是記憶體的一個地址的指向名稱,當該記憶體地址內的內容為可變時,區域性變數就可修改,但記憶體指向任然不變;當記憶體地址指向的內容為不可變時,區域性變數的賦值,就是在記憶體裡重新開拓記憶體塊儲存值,但函式執行完畢,變數的記憶體指向將重新指向全域性變數的記憶體地址。