[英]Possible to pass set operators (operation) as a string argument to a function?
[英]Is it possible to implement the argument unpacking operators (aka splash operators) as a function?
場景:
kwargs = dict(a=1, b=2)
def test(a=None, b=None): return a, b
def unpack(kwargs):
...
return whatever
test(unpack(kwargs)) # instead of test(**kwargs)
>> 1, 2
我疲憊的頭腦可以解決的唯一解決方案是扭轉整個混亂,如:
def unpack(f, kwargs):
return f(**kwargs)
unpack(test, kwargs)
>> 1, 2
至於原因:沒有迫切需要。 但是,一般來說,如果一個unpack
功能是可行的,我想知道是出於好奇。
不,這是不可能的。 參數解包是調用語法的一部分,而不是生成參數的表達式。
Python解析器和編譯器將語法轉換為專用字節碼。 如果沒有那些,函數將無法復制將對象解包為參數所做的工作。
而是生成位置參數列表和關鍵字參數字典,並始終應用這些,即使是空的:
def update_kwargs(kwargs):
# update the dictionary
args, kwargs = [], {}
update_kwargs(kwargs)
test(*args, **kwargs)
*args
的空列表或**kwargs
空字典只會導致根本不應用任何參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.