理解python函式,這一篇文章就夠了

若能綻放光丶發表於2020-11-23

python函式知識重難點

1.在python裡,函式也是一個變數,定義方式:def 變數名(形參列表)。

2.函式不被呼叫,就不佔用記憶體。

3.函式的四種引數:
*必需引數:f(a,b)
*關鍵字引數:f(b = ?,a = ?)
*預設引數:def f(a,b = ?)
*不定長引數:def f(a) (一個,後面的引數都被打包成元組存在a中)
def f(*a) (兩個,傳參的形式必須為(name = value,name = value,…),被打包成字典,存在a中)

4.return語句一旦執行,代表著整個函式的結束,若函式中沒有return,預設返回None,python的return可以返回多個值。

5.函式的四個作用域:
*L: local,區域性作用域(函式中自定義的變數)
*E: enclosing,包含上級作用域,但不是全域性的
*G: golbal,全域性變數
*B: buid-in,python內建作用域
變數查詢順序:LEGB

6.在Python中,只有模組(module),類(class)以及函式(def、lambda)才會引入新的作用域,
其它的程式碼塊(如if、try、for等)是不會引入新的作用域的,如下程式碼:
if 2>1: 這個是沒有問題的,if並沒有引
x = 1 入一個新的作用域,x仍處在當前
print(x) # 1 作用域中,後面程式碼可以使用。
但是在C語言和java語言中,x如果定義在if語句中,在外面是訪問不到的,所以這是python與C語言和java語言的區別

7.golbal關鍵字:在函式中想要使用全域性變數的時候使用。

8.nolocal關鍵字:在函式中想要訪問上一級作用域的物件。

9.匿名函式:lambda 形參(可以有多個):表示式
* 匿名函式只能返回一個值
* 表示式只能是有限的邏輯
* x =lambda : 接收一個函式物件,和def f(a,b)的f一樣,x和f都是物件,x()和f()都是對函式的呼叫

10.常用的內建函式:
* map函式:map(函式物件, 可迭代物件)
* reduce函式:reduce(函式物件, 可迭代物件)
* filter函式:filter(函式物件, 可迭代物件)
* sorted函式(這個特殊,單獨記憶):sorted(可迭代物件, key = 函式物件,reversed = True(False))

相關文章