簡體   English   中英

當外部函數具有同名的關鍵字參數時,將關鍵字參數傳遞給內部函數

[英]passing keyword argument to inner function when outer function has keyword argument with the same name

我有兩個大致這樣定義的函數:

def func_inner(bar=0):
    print('inner bar:', bar)
    
def func_outer(bar=-1, *args, **kwargs):
    print('outer bar:', bar)
    func_inner(*args, **kwargs)

有沒有辦法調用func_outer並為它提供兩個bar值 - 一個用於func_outer ,另一個傳遞給func_inner 調用func_outer(bar=1,bar=2)顯然不起作用。

可以通過將bar值指定為位置參數來解決該問題,例如func_outer(1,2) ,但我想將它們指定為兩個函數的關鍵字參數。

是否有完全在調用方的解決方案(即不改變功能)?

不,沒有

您不能將具有相同名稱的兩個參數傳遞給函數。 因此,您將無法在kwargs中擁有鍵"bar"

因此,您不能在不修改這兩個函數的情況下傳遞此參數。

可能有一種更適合您正在做的事情的方式

這是在裝飾器中彈出的那種代碼。 在這種情況下,您可能希望使外部函數currified

暫無
暫無

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

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