[英]Passing parameter as keyword to new function
假设我有以下代码:
def my_func(a, b, param="foo"):
if param == "foo":
obj = other_func(foo=(a, b))
elif param == "bar":
obj = other_func(bar=(a, b))
elif param == "test":
obj = other_func(test=(a, b))
有没有更 Pythonic 的方式将参数转换为新 function 的关键字? 这个方法在几个 if 语句之后变得乏味。 像这样的东西会更好(只是例子):
def my_func(a, b, param="foo"):
obj = other_func(param=(a, b))
经过大量测试,我发现最好的如下:
def my_func(a, b, param="foo"):
temp_str = f"{param}=(a, b)"
obj = eval("other_func("+temp_str+")")
但是我只听说过关于 eval() 的坏事,我并不完全理解。
使用**
运算符解压 dict 并将其项目作为关键字 arguments 传递给 function:
def my_func(a, b, param="foo"):
obj = other_func(**{param: (a,b)})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.