【问题标题】:How to convert a string to optional argument name in Python function?如何在 Python 函数中将字符串转换为可选参数名称?
【发布时间】:2021-07-11 23:47:01
【问题描述】:

我是 Python 新手,想知道如何使用存储在某个变量中的字符串在函数中“动态”传递可选参数名称。

这是我的功能:

def my_func(arg1=4 arg2=8):
   print(arg1 * arg2)

这就是我的代码现在的样子:

param_name = “arg1”
param_value = 5

if param_name == “arg1”:
   my_func(arg1=param_value)
elif param_name == “arg2”:
   my_func(arg2=param_value)

我的问题是是否可以在没有 if/elif 的情况下将上面的代码简化为这样的:

param_name = “arg1”
param_value = 5

my_func(eval(param_name) = param_value)

PS:我知道这不是如何使用 eval() 并且使用 eval 是不安全的并且在大多数情况下被认为是一种不好的做法,所以代码只是为了说明我需要“动态地传递一个可选参数名称” ” 带有来自先前定义的变量的字符串值。

如何在 Python 中做到这一点(并且以最安全的方式)?

提前致谢! :)

【问题讨论】:

    标签: python function dynamic optional-arguments


    【解决方案1】:

    似乎类似于:Passing a dictionary to a function as keyword parameters

    这样的事情可能会有所帮助:

    def myfunc(a=2,b=3):
        print("a is {}\nb is {}".format(a,b))
    
    
    pname = "b"
    myvalue  = 5
    
    myargs = {pname:myvalue} # set your args here as key-value pair
    
    myfunc(**myargs)
    

    【讨论】:

    • 完美运行!谢谢! :)
    【解决方案2】:

    给你。尝试在 python 中使用**functions。

    def my_func(arg1=4, arg2=8):
       print(arg1 * arg2)
    
    param = {"arg1": 5} # this is a dictionary
    
    my_func(**param)
    

    这打印:40

    最好的部分是,您实际上可以同时指定多个参数!

    def my_func(arg1=4, arg2=8):
       print(arg1 * arg2)
    
    params = {"arg1": 5, "arg2":10} # this is a dictionary
    
    my_func(**params)
    

    打印:50

    【讨论】:

    • 这正是我想要的!谢谢! :)
    • @alpqs 是的! Np.
    猜你喜欢
    • 2010-10-29
    • 2021-04-04
    • 2022-11-09
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 2015-04-30
    • 1970-01-01
    相关资源
    最近更新 更多