Python基礎 函式

2021-07-25 21:53:13 字數 2294 閱讀 3622

函式設計原則

函式有多種方法獲得輸入產生輸出,一般使用引數作為輸入,return語句配合可變引數的改變作為輸出。

函式輸入

函式輸出

def

fun(args):

return

def語句

def建立了乙個函式物件並將其賦值給乙個變數。def語句是實時執行的,在模組匯入時執行或者在互動模式下輸入時執行。

始終記住:函式是乙個物件,就像數字、字串一樣。除了函式呼叫外,還可以dir檢視函式物件的屬性。

return語句:函式結果作為呼叫表示式的值,如果沒有return語句,函式返回none。

呼叫

fun

()

在函式名後增加()可以呼叫函式。引數是通過賦值傳遞的。

lambda表示式:建立乙個函式物件並將其作為結果返回。

lambda argu1, argu2, argun : expression using argus
lambda表示式中可以使用預設引數。

lambda表示式可以實現的函式完全可以用def實現,但是由於lambda是表示式而非語句,可以用在def不適用的地方,比如作為乙個列表的元素。另一方面,lambda表示式的主體是個表示式而非**塊,所以只能編寫簡單函式。示例:

>>>key = 'got'

>>>[key]()

8

使用lambda表示式的幾種特殊案例:

import sys

showall = lambda x:map(sys.stdout.write, x)

t = showall(['spam\n', 'eggs\n'])

showall = lambda x: [sys.stdout.write(line) for line in x]

t = showall(['spam\n', 'eggs\n'])

在呼叫函式時,需要向函式傳遞引數。引數的傳遞是以賦值的形式實現的,遵循賦值操作的約束。

python中關於引數需要著重介紹的概念是引數匹配模型。引數會出現在兩個地方:函式頭部的引數以及呼叫時傳入的引數,分別稱為形參和實參。

函式

函式頭部引數必須以此順序出現:一般引數,預設引數,*name,

**name

呼叫者

函式呼叫中,引數必須以此順序出現:位置引數,關鍵字引數,*seq,

**dict

引數匹配步驟

當所有的匹配都完成後,通過賦值操作實現傳參。

本地變數:在def內的函式中是可見的,並且僅在函式呼叫時存在,在函式退出時消失。

global:宣告模組級的變數

對於線性迭代,一般使用迴圈結構而不用遞迴,因為前者簡單並且高效;但是對於需要遍歷任意形狀結構的情況,迴圈不再適用,這個時候需要使用遞迴。

生成器函式

yield表示式替代常規函式中的return語句,用於定義生成器函式,呼叫時返回乙個迭代器物件,該物件支援next()方法,可以開始這個函式或者從上次yield值後的地方恢復。

以常規的def語句編寫,但是使用yield語句一次返回乙個結果。這樣僅在需要的時候才產生結果,而不是立即產生所有結果。

def

gensquares

(n):

for i in range(n):

yiled i ** 2

x = gensquares(4)

next(x)-->0

next(x)-->1

next(x)-->4

next(x)-->9

next(x)-->stopiteration

生成器在記憶體使用和效能方面都比常規函式更好,尤其在結果列表很大時,這一點尤其有用。

生成器表示式

和列表解析式非常類似,區別在於用()而非括起來。生成器表示式返回乙個生成器物件,支援迭代協議,可以使用所有的迭代工具。

生成器本身就是迭代器,和檔案物件相同。

python基礎 函式

def funcname params return value 如果沒有return 最後會返回none,如果只寫return 會返回none 返回值個數為乙個,但是可以返回tuple,表面上返回多個值 def f1 return x,y x,y f1 def nop passdef functe...

Python 函式基礎

定義 函式是指將一組語句的集合通過乙個名字 函式名 封裝起來,要想執行這個函式,只需呼叫其函式名即可 為什麼使用函式 減少重複 使程式變的可擴充套件使程式變得易維護 1 定義乙個函式 2def func 使用def關鍵字定義函式 接函式名,括號內可以傳遞引數 3print hello world 函...

python基礎 函式

在程式設計過程中可以定義自己想要實現的功能的函式,語法如下 def 函式名 引數列表 函式名可以隨意編寫,但最好不要與內建函式重複,不然內建函式將被替換成你所定義的函式 函式體例 def f a,b,c,d return a,b,c,d c f 1,2,3,4 print c c,d,x,y f 1...