簡體   English   中英

Python一個將函數作為參數及其參數的函數

[英]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)

因此,除funcrepeat以外的所有參數都存儲在kwargs詞典中,隨后我們使用命名參數調用func函數(第一個參數)。

請注意,這對於需要func和/或repeat參數的func將不會(正確)起作用,因為我們在area函數級別捕獲了這些函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM