命名空間
全域性命名空間
**在執行伊始,建立的儲存「變數名與值的關係」的空間
區域性命名空間
在函式的執行中開闢的臨時的空間
內建命名空間
python直譯器為我們提供的空間
作用域定義:作用範圍
全域性作用域
內建命名空間
全域性命名空間
區域性作用域
區域性命名空間,只能在區域性範圍內生效
globals() 和 locals()
global
1.宣告乙個全域性變數
2.在區域性作用域對全域性變數修改,用global宣告
ps:對可變資料型別(list,dict,set)可以直接引用不用通過global
nonlocal
1,不能修改全域性變數。
2,在區域性作用域中,對父級作用域(或者更外層作用域非全域性作用域)的變數進行引用和修改,並且引用的哪層,從那層及以下此變數全部發生改變。
函式的巢狀
函式中定義函式
函式的作用鏈
小範圍作用域可以使用大範圍的變數,但是反之不行,他是單向的
函式的本質
1.可以被引用
2.可以被當作容器型別的元素
3.可以當作函式的引數和返回值
一句話概括:當普通變數使用
閉包載入與取值順序
載入順序
內建命名空間(程式執行前載入)>全域性命名空間(程式執行中:從上到下載入)>區域性命名空間(程式執行中:呼叫時才載入)
取值順序
區域性呼叫
區域性命名空間》全域性命名空間》內建命名空間
全域性呼叫
全域性命名空間》內建命名空間
python 函式高階 python 函式高階
形參角度 萬能引數 動態接收位置引數 args 動態接收關鍵字引數 kwargs 的魔性用法 函式定義時 代表聚合。他將所有的位置引數 聚合成乙個元組,賦值給了args 函式定義時 將所有的關鍵字引數聚合成乙個字典中,將這個字典賦給了 kwargs 和 在函式的呼叫時 代表打散 僅限關鍵字引數 de...
Python高階 函式高階
閉包 closure 常規函式中可以在函式的引數中新增引數的預設值來簡化函式的操作,偏函式也可以做到這一點,而且會更加的方便管理函式的操作。通過內建模組functools的partial進行定義和處理 語法結構 新函式名稱 functools.partial 函式名稱,預設賦值引數 例如 全域性函式...
python 函式 高階函式
filter 函式是 python 內建的另乙個有用的高階函式,filter 函式接收乙個函式 f 和乙個list,這個函式 f 的作用是對每個元素進行判斷,返回 true或 false,filter 根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新list。例如判斷奇偶數 def...