Python:如何使用变量传递参数名称

标签 python parameter-passing

我正在使用的一个模块有许多用不同的参数名称定义的函数,或多或少服务于相同的目的:

def func1(start_date):
    ....
def func2(startdate):
    ....
def func3(s_date):
    ....
def func4(sdate):
    ....

并且它们都出现在参数列表的不同位置(在上面的简化情况下它们都在位置 1,但实际上情况并非如此)。

我想编写一个包装器,它可以通过从函数名称到参数名称的字典将实际的 start_date 传递给这些函数中的任何一个:

def func2arg_name():
    return {'func1' : 'start_date', 
            'func2' : 'startdate', 
            'func3' : 's_date', 
            'func4' : 'sdate' }

然后是实际的包装器:

f2a = func2arg_name()
def func(func_name, sdate):
    locals()[func_name](f2a[func_name] = sdate)

func('func1', '20170101')

显然这行不通。本质上,f2a[func_name] 未被识别为合法关键字。有谁知道如何做到这一点,即使用变量传递参数名称?注意 func1func4 是外部定义的,不能更改。

最佳答案

创建一个以参数名称为键的字典,并使用解包运算符传递它:

locals()[func_name](**{f2a[func_name]: sdate})

参见 Unpacking argument lists在 Python 教程中。

关于Python:如何使用变量传递参数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42845252/

相关文章:

python:获取导入函数的抽象语法树?

python - 算术编码和解码算法 Python

c# - 如何将表值参数从 C# 传递到 Oracle 存储过程

python - 列表属性上的 SQLAlchemy 过滤器

python - 将字符串与随机颜色匹配的优雅方法 matplotlib

java - 将字段名称作为参数传递给 Java 中同一类中的方法

java - 请帮我提供 self 引用指针

mysql - 在 Apache Airflow 中,如何将宏结果作为参数传递给存储在单独的 .sql 文件中的 sql 查询

python - Pandas:根据其他列值有条件地替换值

C++ 构造函数——通过引用传递仅适用于 const。为什么?