在Python中將函數(shù)作為另一個(gè)函數(shù)的參數(shù)傳入并調(diào)用的方法
在Python中,函數(shù)本身也是對(duì)象,所以可以將函數(shù)作為參數(shù)傳入另一函數(shù)并進(jìn)行調(diào)用
在舊版本中,可以使用apply(function, *args, **kwargs)進(jìn)行調(diào)用,但是在新版本中已經(jīng)移除,以function(*args, **kwargs)進(jìn)行替代,所以也不應(yīng)該再使用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)
在代碼中,將函數(shù)func_b作為函數(shù)func_a的參數(shù)傳入,將函數(shù)func_b的參數(shù)以元組args傳入,并在調(diào)用func_b時(shí),作為func_b的參數(shù)。
運(yùn)行結(jié)果:
(1, 2, 3)
但是這里存在一個(gè)問題,但func_a和func_b需要同名的參數(shù)時(shí),就會(huì)出現(xiàn)異常,如:
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'
雖然通過修改,手動(dòng)將arg_a作為參數(shù)傳入func中進(jìn)行調(diào)用,可以正常運(yùn)行,但這明顯不符合設(shè)計(jì)初衷:在func_a中執(zhí)行func(**kwargs)時(shí),很可能并不知道func到底需要什么參數(shù)。換句話說,如果已經(jīng)提前知道需要調(diào)用什么函數(shù),那完全不必要把函數(shù)作為參數(shù)傳入另一個(gè)函數(shù)并調(diào)用,直接調(diào)用函數(shù)即可。
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)
當(dāng)加入第三個(gè)函數(shù),func_c,它不需要arg_a這個(gè)參數(shù)時(shí),就會(huì)出現(xiàn)問題。
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中將函數(shù)作為另一個(gè)函數(shù)的參數(shù)傳入并調(diào)用的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python+Requests+PyTest+Excel+Allure?接口自動(dòng)化測(cè)試實(shí)戰(zhàn)
本文主要介紹了Python+Requests+PyTest+Excel+Allure?接口自動(dòng)化測(cè)試實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
Python裝飾器的應(yīng)用場(chǎng)景及實(shí)例用法
在本篇內(nèi)容里小編給大家整理了一篇關(guān)于Python裝飾器的應(yīng)用場(chǎng)景及實(shí)例用法,有興趣的朋友們可以學(xué)習(xí)下。2021-04-04
jupyter notebook運(yùn)行代碼沒反應(yīng)且in[ ]沒有*
本文主要介紹了jupyter notebook運(yùn)行代碼沒反應(yīng)且in[ ]沒有*,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
在pycharm中執(zhí)行 os.makedirs 提示用戶名或密碼不正確的問題及解決方法
這篇文章主要介紹了在pycharm中執(zhí)行 os.makedirs 提示用戶名或密碼不正確的問題及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01
Django使用詳解:ORM 的反向查找(related_name)
今天小編就為大家分享一篇Django使用詳解:ORM 的反向查找(related_name),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05
Python對(duì)于json數(shù)據(jù)鍵值對(duì)遍歷
這篇文章主要介紹了一文搞定Python中對(duì)于json數(shù)據(jù)鍵值對(duì)遍歷,Python中可以通過字典或者列表的遍歷方式來遍歷JSON格式的數(shù)據(jù)中的鍵值對(duì),具體的遍歷方法取決于你將JSON數(shù)據(jù)解析后得到了一個(gè)字典對(duì)象還是一個(gè)列表對(duì)象,以及JSON數(shù)據(jù)的結(jié)構(gòu),需要的朋友可以參考下2023-04-04
解決pycharm不能自動(dòng)補(bǔ)全第三方庫(kù)的函數(shù)和屬性問題
這篇文章主要介紹了解決pycharm不能自動(dòng)補(bǔ)全第三方庫(kù)的函數(shù)和屬性問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03

