繁体   English   中英

将参数作为关键字传递给新的 function

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM