![](/img/trans.png)
[英]Call Python function passed as parameter without knowing if it takes any parameters
[英]Python A function that takes a function as a parameter with its parameters
假設我有兩個功能
def areaSquare(a,b):
print( a * b)
def areaCircle(radius):
print(3.14159 * radius ** 2)
我想創建第三個函數,稱為Area。
area(areaCircle,radius = 3, repeat = 5)
# prints 3.14159 * 9 five times
area(areaSquare, a = 2, b = 3, repeat = 6)
# prints 2 * 6 six times
因此,該函數將函數作為參數。 根據作為參數傳遞給它的函數,它應該需要其他參數。 有沒有辦法做到這一點? 我知道函數重載將是一個選擇。 但是我不想為此定義多個功能。
是的, kwargs是您的朋友在這里。 我們可以定義函數,以便將其余參數捕獲在名為kwargs
的字典中,然后傳遞給我們提供的函數。 喜歡:
def area(func, repeat, **kwargs):
for _ in range(repeat):
func(**kwargs)
因此,除func
和repeat
以外的所有參數都存儲在kwargs
詞典中,隨后我們使用命名參數調用func
函數(第一個參數)。
請注意,這對於需要func
和/或repeat
參數的func
將不會(正確)起作用,因為我們在area
函數級別捕獲了這些函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.