函式的定義
函式執行的**以冒號起始,並且縮排。
return [表示式] 結束函式,選擇性地返回乙個值給呼叫方。不帶表示式的return相當於返回none。
函式引數
python 的函式具有非常靈活多樣的引數形態,既可以實現簡單的呼叫,又可以傳入非常複雜的引數。從簡到繁的引數形態如下:
1.位置引數
arg1
- 位置引數 ,這些引數在呼叫函式 時位置要固定
2.預設引數
arg2 = v
- 預設引數 = 預設值,呼叫函式時,預設引數的值如果沒有傳入,則被認為是預設值。
預設引數一定要放在位置引數 後面,不然程式會報錯。
3.可變引數
*args
- 可變引數,可以是從零個到任意個,自動組裝成元組。
加了星號(*)的變數名會存放所有未命名的變數引數。
4.關鍵字引數
**kw - 關鍵字引數,可以是從零個到任意個,自動組裝成字典
ps:可變引數允許傳入零個到任意個引數,它們在函式呼叫時自動組裝為乙個元組
關鍵字引數允許傳入零個到任意個引數,它們在函式內部自動組裝為乙個字典
5.命名關鍵字引數
*, nkw
- 命名關鍵字引數,使用者想要輸入的關鍵字引數,定義方式是在nkw 前面加個分隔符 *。
如果要限制關鍵字引數的名字,就可以用「命名關鍵字引數」
使用命名關鍵字引數時,要特別注意不能缺少引數名
6.引數組合
引數定義的順序
位置引數、預設引數、可變引數和關鍵字引數。
位置引數、預設引數、命名關鍵字引數和關鍵字引數
*args
是可變引數,args
接收的是乙個tuple
**kw
是關鍵字引數,kw
接收的是乙個dict
ps:定義命名關鍵字引數不要忘了寫分隔符 *,否則定義的是位置引數。
變數作用域
1.區域性變數
在函式內部的變數擁有區域性作用域
2.全域性變數
在函式外部的變數擁有全域性作用域
ps:區域性變數只能在其被宣告的函式內部訪問,而全域性變數可以在整個程式範圍內訪問
閉包函式式程式設計的乙個重要的語法結構,是一種特殊的內嵌函式
如果在乙個內部函式裡對外層非全域性作用域的變數進行引用,那麼內部函式就被認為是閉包。
通過閉包可以訪問外層非全域性作用域的變數,這個作用域稱為 閉包作用域。
閉包的返回值通常是函式
lambda 表示式
匿名函式
python 使用lambda
來建立匿名函式。
lambda
只是乙個表示式,函式體比def
簡單很多。
lambda
函式擁有自己的命名空間,且不能訪問自己引數列表之外或全域性命名空間裡的引數。
lambda
函式沒有所謂的函式名
argument_list
- 函式引數,它們可以是位置引數、預設引數、關鍵字引數,和正規函式裡的引數型別一樣。
:
- 冒號,在函式引數和表示式中間要加個冒號。
expression
- 函式表示式,輸入函式引數,輸出一些值。
lambda 表示式的應用
filter(function, iterable)
過濾序列,過濾掉不符合條件的元素,返回乙個迭代器物件,如果要轉換為列表,可以使用list()
來轉換
map(function, iterable, …)
根據提供的函式對指定序列做對映
除了 python 這些內建函式,我們也可以自己定義高階函式
《刻意練習》5
不管是 還是體育等等領域,該領域中最傑出的人在青少年時期總是經過了漫長的練習才取得了如今的成績。並且投入的時間與取得的成績成正比。1 首先,它需要乙個已經得到合理發展的行業或領域,也就是說,在那一行業或領域之中,最傑出的從業者已達到一定程度的表現水平,使他們與其他剛剛進入該行業或領域的人們明顯地區分...
演算法刻意練習6
1.使用鍵 值 key value 儲存,具有極快的查詢速度 在list中查詢元素的方法,list越大,查詢越慢 2.先在字典的索引表裡 比如部首表 查這個字對應的頁碼,然後直接翻到該頁,找到這個字。無論找哪個字,這種查詢速度都非常快,不會隨著字典大小的增加而變慢。ps 字典是 python 唯一的...
刻意練習Python DAY5
1.python中沒有字元的概念,單位為1的字串就是單個的字元。2.字串的方法及注釋 方法注釋 capitalize 把字串的第乙個字元改為大寫 casefold 把整個字串的所有字元改為小寫 count sub start end 返回 sub 在字串裡邊出現的次數,start 和 end 引數表...