python 把函式作為引數 高階函式

2021-09-22 02:39:15 字數 1958 閱讀 5072

在實際使用中,我們有時希望將函式作為引數傳遞給另乙個方法使用。

比如裝飾器實際就是函式呼叫函式

使用函式當做入參

那就可以把方法名a當做入參傳遞給方法b,呼叫的時候直接用【方法名()】來呼叫方法內容

>>> import time

>>> def run(func):

print (time.strftime("%y-%m-%d %h:%m:%s", time.localtime()))

func()

print (time.strftime("%y-%m-%d %h:%m:%s", time.localtime()))

>>> def test():

print("我是個測試檔案")

>>> run(test)

2019-05-10 11:46:53

我是個測試檔案

2019-05-10 11:46:53

使用函式當做入參,函式本身包含引數

如果要呼叫的方法a有引數怎麼辦呢?在定義b方法的時候,也將引數傳進去,然後呼叫方法的時候使用【方法名(引數1,引數2)】

#將方法名和引數都傳遞給呼叫的方法

>>> def run(func,a,b):

print (time.strftime("%y-%m-%d %h:%m:%s", time.localtime()))

func(a,b)

print (time.strftime("%y-%m-%d %h:%m:%s", time.localtime()))

>>> def plus(a,b):

print(a+b)

>>> run(plus,3,5)

2019-05-10 11:51:08

82019-05-10 11:51:08

使用函式當做入參,函式本身包含不確定個數的入參

如果要呼叫的方法的入參個數不確定,可以使用args或**args。但是一定要把args放到最後面

#有時候呼叫的方法的入參個數不確定,可使用*args表示。

#但是注意一定要把*args放到後面,因為run()也有可能入參

>>> def run(func,a,*args):

print (time.strftime("%y-%m-%d %h:%m:%s", time.localtime()))

print(a)

print(*args)

print (time.strftime("%y-%m-%d %h:%m:%s", time.localtime()))

>>> def plus(*args):

temp=0

for i in args:

temp=temp+i

print(temp)

>>> run(plus,100,1,2,3,4)

2019-05-10 11:55:14

1001 2 3 4

2019-05-10 11:55:14

>>>

把函式作為引數

在2.1小節中,我們講了高階函式的概念,並編寫了乙個簡單的高階函式:

def add(x, y, f):

return f(x) + f(y)

如果傳入abs作為引數f的值:

add(-5, 9, abs)

根據函式的定義,函式執行的**實際上是:

abs(-5) + abs(9)

由於引數 x, y 和 f 都可以任意傳入,如果 f 傳入其他函式,就可以得到不同的返回值。

任務利用add(x,y,f)函式,計算:

import math

def add(x, y, f):

return f(x) + f(y)

print add(25, 9, math.sqrt)

結果為8.0

參考:

python把函式作為引數

在2.1小節中,我們講了高階函式的概念,並編寫了乙個簡單的高階函式 def add x,y,f return f x f y print add 5,9,abs 14根據函式的定義,函式執行的 實際上是 abs 5 abs 9 由於引數 x,y 和 f 都可以任意傳入,如果 f 傳入其他函式,就可以...

JS 把函式作為引數傳遞

昨天同事問了我乙個挺有意思的問題,就是js如何把函式當作引數傳進另乙個函式中執行,上網找了乙個並做乙個總結,目前我能理解並正常使用的兩種方法 方法一 func 方法名 str 引數 function test1 func,str else function test2 str 方法二 functio...

公開的函式把函式作為引數

公開的函式把函式作為引數 假設想公開把其它的函式作為引數的函式。最好的方法是用託付 delegate 考慮以下的樣例。定義了兩個函式,乙個是公開函式,還有乙個把函式公開為託付。module strangelights.demomoduleopen system a function that pro...