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...