gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 17:28:02 25 4
gpt4 key购买 nike

有许多 StackOverflow 问题询问有关将变量用作变量的问题(例如 thisthis ,但我不认为这是重复的。我想要了解我是否可以将变量的值用作函数参数。

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

  • name 表的列是 idfullname
  • phone 表的列是 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() 不在我的控制之下——它将接受 dateidphonenumfullname 参数,但无法重构。)

最佳答案

您可以使用 double star operator将任意参数传递给函数:

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

some_function(**kwargs)

你可以通过像这样内联字典来缩短它:

some_function(**{col: var})

您可以混合和匹配语法并最终得到如下内容:

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

关于python - 我可以使用变量的值作为函数的参数名称吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37014669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com