Python 函式的高階用法

2021-08-23 12:42:50 字數 1885 閱讀 6133

python 中一切皆物件,我們定義的名稱僅僅是與這些物件繫結的識別符號。函式也不例外,它們也是物件,同樣可以被繫結到不同的名稱。

>>> def welcome(info):

... print(info)

... return

...>>>

>>> welcome # 輸出函式 welcome 的記憶體位址

>>>

>>> f = welcome #將 welcome 的記憶體位址當做值賦值給變數 f

>>>

>>> f # 輸出 f,其實就是輸出 welcome 的記憶體位址

>>>

>>> f('hello') # 等同於 welcome('hello')

hello

welcome 和 f 指的是同乙個函式物件。

【注】函式名在不帶小括號(())時,表示的是函式的記憶體位址。

在 python 中,將其他函式作為引數的函式稱為高階函式

>>> def addf(x,y):      # 求和

... return x+y

...>>>

>>> def subtract(x,y): # 求差

... return x - y

...>>>

>>>

>>> def operate( func,x,y): # 高階函式

... result = func(x,y)

... return result

...>>>

>>> # 呼叫高階函式

...>>> operate(addf, 34,45)

79>>> operate(subtract, 34,45)

-11

將函式物件 addf 和 subtract 當做 operate() 的引數進行傳遞。

函式是乙個物件,所以可以作為某個函式的返回值。

>>> def outer():                # 封閉函式

... def inner(n): # 巢狀函式

... sum = 0

... for i in range(1,n+1):

... sum += i

... return sum

... return inner # 返回乙個函式物件

...>>>

>>> f1 = outer()

>>> f1

.inner at 0x015d4ae0>

>>> f2 = outer()

>>> f2

.inner at 0x015d4b70>

>>>

>>>

>>> outer( 5)

traceback (most recent call last):

file "", line 1, in typeerror: outer() takes 0 positional arguments but 1 was given

>>>

>>>

>>> f1(5)

15>>> f2(10)

55

f 和 f2 不同,這是因為 inner() 是在執行 outer() 期間被定義的,所以第二次的建立對第一次沒有影響。

當呼叫 f(n) 時,才會真正地計算求和結果。

python高階用法 Python高階用法

python高階用法 三元表示式 x 10 y 20 print x if x y else y x 100 y 20 print x if x y else y 列表推導式和生成器 列表推導式 print i for i in range 10 print i 2 for i in range 1...

Python中sorted 函式的高階用法詳解

sorted 函式的作用是對物件進行排序 函式函式格式 sorted iterable,key,reverse key引數可傳入乙個自定義函式 下邊通過具體例子說明sorted的具體用法 一維陣列,直接排序即可 usr bin env python coding utf 8 a 1,2,3 3,5,...

函式的高階用法

在pyton中,函式與任何其它物件 字串,數字,列表 一致,既可以動態地建立或銷毀,也可以傳遞給其它函式,或者作為值進行返回。python中的一切皆物件,我們定義的名稱僅僅是與這些物件繫結的識別符號。函式也不例外,它們也是物件,同樣可以被繫結到不同的名稱。def add x,y return x y...