91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在Python中如何將函數作為另一個函數的參數傳入并調用

發布時間:2021-08-06 09:25:56 來源:億速云 閱讀:413 作者:小新 欄目:開發技術

這篇文章主要介紹了在Python中如何將函數作為另一個函數的參數傳入并調用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

在Python中,函數本身也是對象,所以可以將函數作為參數傳入另一函數并進行調用

在舊版本中,可以使用apply(function, *args, **kwargs)進行調用,但是在新版本中已經移除,以function(*args, **kwargs)進行替代,所以也不應該再使用apply方法

示例代碼:

def func_a(func, *args, **kwargs):
  print(func(*args, **kwargs))

def func_b(*args):
  return args

if __name__ == '__main__':
  func_a(func_b, 1, 2, 3)

在代碼中,將函數func_b作為函數func_a的參數傳入,將函數func_b的參數以元組args傳入,并在調用func_b時,作為func_b的參數。

運行結果:

(1, 2, 3)

但是這里存在一個問題,但func_a和func_b需要同名的參數時,就會出現異常,如:

def func_a(arg_a, func, **kwargs):
  print(arg_a)
  print(func(**kwargs))

def func_b(arg_a):
  print(arg_a)

if __name__ == '__main__':
  func_a(arg_a='Hello Python', func=func_b)

異常信息:

TypeError: func_b() missing 1 required positional argument: 'arg_a'

雖然通過修改,手動將arg_a作為參數傳入func中進行調用,可以正常運行,但這明顯不符合設計初衷:在func_a中執行func(**kwargs)時,很可能并不知道func到底需要什么參數。換句話說,如果已經提前知道需要調用什么函數,那完全不必要把函數作為參數傳入另一個函數并調用,直接調用函數即可。

def func_a(arg_a, func, **kwargs):
  print(arg_a)
  func(arg_a=arg_a, **kwargs)

def func_b(arg_a):
  print(arg_a)

if __name__ == '__main__':
  func_a(arg_a='Hello Python', func=func_b)

當加入第三個函數,func_c,它不需要arg_a這個參數時,就會出現問題。

def func_a(arg_a, func, **kwargs):
  print(arg_a)
  func(arg_a=arg_a, **kwargs)

def func_b(arg_a):
  print(arg_a)

def func_c():
  print('Hello World')

if __name__ == '__main__':
  func_a(arg_a='Hello Python', func=func_b)
  func_a(arg_a='Hello Python', func=func_c)

感謝你能夠認真閱讀完這篇文章,希望小編分享的“在Python中如何將函數作為另一個函數的參數傳入并調用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

上栗县| 泰顺县| 巨野县| 苏州市| 新绛县| 泗水县| 济源市| 应城市| 东阳市| 伊金霍洛旗| 芒康县| 斗六市| 聂荣县| 桑植县| 读书| 儋州市| 孟津县| 丰镇市| 平凉市| 章丘市| 萨嘎县| 洪湖市| 贞丰县| 建瓯市| 时尚| 江源县| 鱼台县| 伊春市| 咸宁市| 德钦县| 永昌县| 北票市| 宁德市| 靖宇县| 郑州市| 桂阳县| 齐河县| 巴东县| 长兴县| 屯留县| 青龙|