【发布时间】:2016-05-03 21:27:47
【问题描述】:
有许多 StackOverflow 问题询问关于将变量用作变量(例如 this 和 this,但我不认为这是重复的。我想要知道我是否可以将变量的值用作函数参数。
例如,假设我想调用一个函数来填充两个不同的 MySQL 表之一:
-
name 表的列是
id和fullname。 -
phone 表的列是
id和phonenum
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() 不在我的控制之下 - 它将接受 date、id 和 phonenum 或 fullname 参数,但无法重构。)
【问题讨论】:
标签: python parameters expression parameter-passing