想象一下,我想創建一個名為“execute()”的函式。該函式將另一個函式的名稱及其輸入作為引數,并輸出它回傳的任何內容。
下面是一個例子:
execute(print, "Hello, World!") # "Hello, World!"
execute(str, 68) # "68"
當然,這個函式沒有任何用處,但我想掌握將另一個函式作為引數放入的主要思想。我怎么能這樣做?
uj5u.com熱心網友回復:
你可以這樣做,
def execute (func, argv):
return func(argv)
execute(print, 'test')
回報 test
execute(str, 65)
回報 '65'
uj5u.com熱心網友回復:
函式可以很容易地傳遞給函式。要傳遞可變長度引數串列,請*args在函式定義中捕獲它,并在呼叫 func 時使用相同的語法將引數再次擴展為多個引數。
def execute(fn, *args):
return fn(*args)
注意:我們不是將函式的名稱傳遞給execute(),而是傳遞函式本身。
uj5u.com熱心網友回復:
我相信這應該有效:
def execute(fn, *args, **kwargs):
return fn(*args, **kwargs)
這里:
- args = 引數(串列)
- kwargs = 關鍵字引數(字典)
如果你想做更多,那么你可以在 Python 中尋找裝飾器。
uj5u.com熱心網友回復:
是的,您可以將函式作為引數傳遞給另一個函式。可以接受其他函式作為引數的函式也稱為高階函式。我希望下面的例子有幫助:
def shout(text):
return text.upper()
def greet(func):
greeting = func("Hi, I am created by a function passed as an argument.")
print(greeting)
greet(shout)
代碼的輸出將是:
嗨,我是由作為引數傳遞的函式創建的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/388960.html
上一篇:使用條件從二維串列中獲取特定元素
下一篇:如何解決raiseValueError("columnsmusthavematchingelementcounts")ValueError:columnsmusthavematch
