一:全局參數與局部參數的典型舉例
①:在函數外定義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']
其實變量就是內存的一個地址的指向名稱,當該內存地址內的內容為可變時,局部變量就可修改,但內存指向任然不變;當內存地址指向的內容為不可變時,局部變量的賦值,就是在內存里重新開拓內存塊存儲值,但函數執行完畢,變量的內存指向將重新指向全局變量的內存地址。