一,函式的引數型別
不可變型別引數:整數、字串、元組。
fun(a)內部修改 a的值,只是修改另乙個複製的物件,不會影響 a 本身。
可變型別:列表,字典。如 fun(la), 則是將 la 真正的傳過去,修改後fun外部的la也會受影響
二,命名空間
命名空間指的是儲存程式中的變數名和值的地方。
命名空間的本質是乙個字典, 用來記錄變數名稱和值。字典的key是變數的名稱,字典的value對於的是變數的 值。
例如 命名空間一共分為三種:
區域性命名空間、全域性命名空間、內建命名空間
區域性空間: 每個函式都有自己的命名空間,叫做區域性空間,它記錄了函式的變數,包括函式 的引數 和區域性定義的變數
全域性空間: 每個模組擁有它自已的命名空間,叫做全域性命名空間,它記錄了模組的變數,包 括函式、 類、其它匯入的模組。
內建命名空間: 任何模組均可訪問它,它存放著內建的函式和異常。 input,print,str,list,tuple…
三、作用域
作用域指的是變數在程式中的可應用範圍。 作用域按照變數的定義位置可以劃分為4類即legb: local(函式內部)區域性作用域。 enclosing(巢狀函式的外層函式內部)巢狀作用域(閉包)。 global(模組全域性)全域性作用域。
builtin(內建)內建作用域。(指的是builtins.py模組)
python內層作用域訪問外層作用域時的順序: python搜尋4個作用域[本地作用域(l)之後是上一層結構中def或者lambda的本 地作用域(e),之後是全域性作用域(g)最後是內建作用域(b)(即python的內建類和 函式等)] 並且在第一處能夠找到這個變數名的地方停下來。如果變數名在整個的搜尋過程 中都沒有找到,python就會報錯。
四、全域性變數和區域性變數
在函式中定義的變數稱為區域性變數,只在函式內部生效, 在程式一開始定義的變數稱為全域性變數,全域性變數的作用域是整個程式。
五、global和nonlocal關鍵字
1、global關鍵字可以將區域性變數變成乙個全域性變數。 格式: global 變數名稱。
2. nonlocal關鍵字可以修改外層(非全域性)變數。
六、命名空間和作用域的關係
命名空間定義了在某個作用域內變數名和繫結值之間的對應關係,命名空間是鍵 值對的集合,變數名與值是一一對應關係。 作用域定義了命名空間中的變數能夠在多大範圍內起作用。
七、內建函式
由於時間問題,重點講解如下的內建函式。其他內建函式課下驗證。 abs() 函式 max() 函式、map() 函式、filter() 函式,zip() 函式
八、匿名函式 在定義函式的時候,不想給函式起乙個名字。這個時候就可以用lambda來定義 乙個匿名函式
語法: 變數名= lambda 引數:表示式(block) 引數:可選,通常以逗號分隔的變數表示式形式,也就是位置引數
表示式:不能包含迴圈、return,可以包含if…else…
注意:1.表示式中不能包含 迴圈,return
2.可以包含 if…else…語句.
3.表示式計算的結果直接返回
九、巢狀作用域和lambda lambda表示式也會產生乙個新的區域性作用域。在def定義的函式中巢狀labmbda 表示式,lambda表示式 能夠看到所有def定義的函式中可用的變數。
lambda表示式總結:
優點:**簡潔,不增加額外變數。
缺點:難於理解,降低了可讀性。 建議:不提倡使用lambda, 除非你知道自己在幹什麼。在團隊開發中, 乙個良 好易讀的**是非常重要的,有助於提公升團隊協同開發效率,減少溝通和維護成 本。
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...