我可以使用变量的值作为函数的参数名称吗?

乔治·亚当斯

有很多StackOverflow问题询问使用变量作为变量(例如thisthis,但是我不认为这是这些变量的重复。我想知道是否可以将变量的值用作函数参数。

例如,假设我要调用一个函数,该函数将填充两个不同的MySQL表之一:

  • 名称表的列idfullname
  • 电话表的列idphonenum
data = get_data()                 # data = a full name or a phone number
data_type = get_data_type(data)   # data_type = "name" or "phone"
....
column_names_for_tables = {'name': 'fullname', 'phone': 'phonenum'}
column_name = column_names_for_tables[data_type]
# column_name now = "fullname" or "phonenum", depending on the value of #data

new_entry = MakeNewEntry(date=datetime.datetime.now(), id=123, <column_name>=data)

当然,最后一行不是有效的Python,但我的目标是动态生成函数调用:

new_entry = MakeNewEntry(date=datetime.datetime.now(), id=123, fullname=data)

要么

new_entry = MakeNewEntry(date=datetime.datetime.now(), id=123, phonenum=data)

也就是说,我想使用的值column_name作为参数的名称。

我可以那样做吗?

(在这个例子中,请假设MakeNewEntry()是不是我的控制之下-它会接受dateid和一个phonenumfullname参数,但不能进行重构。)

匿名

您可以使用双星运算符将任意参数传递给函数:

col = 'foo'
val = 'bar'
kwargs = {col: bar}

some_function(**kwargs)

您可以像这样通过内联字典来缩短该时间:

some_function(**{col: var})

您可以混合使用语法,最后得到类似以下内容:

MakeNewEntry(date=datetime.datetime.now(), id=123, **{column_name: data})

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以使用Java反射获取方法参数名称吗?

我可以使用变量的值作为C#中对象的名称吗

使用函数名称作为参数

我可以使用DataKinds编写一个返回参数编码类型的值的函数吗?

我可以使用TimeSpan作为具有默认值的可选参数吗?

Typescript:可以使用enum作为函数参数类型吗?

OBJ-C,我可以使用协议作为函数参数的参数类型吗?

我可以使用带有通用参数名称的路由吗

我可以使用类型作为值(或从构造函数参数正确推断通用类类型)吗?

如何遍历给定参数以使用Bash函数打印参数名称和值?

Vuex:我可以使用突变/动作的函数名称代替常量吗?

我可以使用函数参数来创建全局变量吗?

我可以使用std :: string * argv作为主要函数参数吗?

我可以使用返回值作为参数多次运行同一个函数吗?

我可以使用具有相同路径和不同参数名称的多个get请求吗?

我可以使用命名参数作为变量在python中调用函数吗?

我可以使用成员函数作为EnumWindows的第一个参数吗

我可以使用枚举作为结构名称吗?

我可以使用void *作为函数的参数吗?

在Python中传递参数时,我可以使用相同的参数名称吗?

可以使用参数作为动画属性名称吗?

如何使用函数名称和参数作为变量来调用适当的函数?的PHP

swift while循环可以使用函数作为参数吗?

在PHP中使用函数名称作为无关类的名称可以吗?

我可以使用 PHP 匿名函数作为参数,而不将函数分配给变量吗?

我可以使用 IEnumerator 作为更新函数吗?

我们可以使用参数名称调用像 sqlserver exec 这样的 postrgesql 存储过程吗?

如果基类作为参数调用,我可以使用派生类函数吗?

我可以使用 std::string 变量作为运算符的参数吗?