簡體   English   中英

如何在Python中將kwargs傳遞給另一個kwargs?

[英]How to pass kwargs to another kwargs in python?

def a(**akwargs):
    def b(bkwargs=akwargs):
        # how to not only use akwargs defaultly,but also define bkwargs by
        # myself?
        print bkwargs
    return b

如果我想實現以下功能。 我該如何處理上面的代碼?

>>>a(u='test')()
{'u': test}

>>>a(u='test')(u='test2')
{'u': test2}

尚不清楚您要什么,但我認為這是竅門:

def a(**akwargs):
    def b(bkwargs=akwargs, **kwargs):
        # how to not only use akwargs defaultly,but also define bkwargs by
        # myself?
        if not bkwargs:
            bkwargs = kwargs
        else:
            # it depends what you want here (merge or replace?), but probably
            # something like bkwargs.update(kwargs) or kwargs.update(bkwargs)
    return b

默認使用外部函數的kwarg,並更新傳遞給內部函數的kwarg。

from functools import partial

def outer(**kwargs):
    def inner(**kwargs):
        return(kwargs)
    return partial(inner, **kwargs)

如果沒有將kwargs分配給內部函數,那么下一個將使用來自外部函數的kwargs。

def outer(**outer_kwargs):
    def inner(**inner_kwargs):
        kwargs = inner_kwargs or outer_kwargs
        return kwargs
    return inner

為什么不執行以下操作?

def a(**akwargs):
    def b(**bkwargs):
        allkwargs = {}
        allkwargs.update(akwargs)
        allkwargs.update(bkwargs)
        print allkwargs
    return b

這將使用值從a但允許您通過傳遞更多的覆蓋它b 所以:

>>> a(u='test')()
{'u': 'test'}
>>> a(u='test')(u='test2')
{'u': 'test2'}

暫無
暫無

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

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