Python 将格式化字符串作为参数传递给函数
我想知道是否有一种很好的方法来完成以下任务:我想运行for循环,创建具有迭代属性(有时是随机属性)的对象实例。特别是,我想说这样的话:Python 将格式化字符串作为参数传递给函数,python,string,formatting,arguments,Python,String,Formatting,Arguments,我想知道是否有一种很好的方法来完成以下任务:我想运行for循环,创建具有迭代属性(有时是随机属性)的对象实例。特别是,我想说这样的话: OUT_TASK = "Task_{id1}, FUNCTION, {id2}, task{id3}_types, None" t = Task(OUT_TASK.format(id1=i, id2='doNothing', id3=i)) 现在,编译器告诉我,我只向Task()传递了2个参数,而它至少需要4个参数 非常感谢-非常感谢提供线索。您的代码现在正在
OUT_TASK = "Task_{id1}, FUNCTION, {id2}, task{id3}_types, None"
t = Task(OUT_TASK.format(id1=i, id2='doNothing', id3=i))
现在,编译器告诉我,我只向Task()传递了2个参数,而它至少需要4个参数
非常感谢-非常感谢提供线索。您的代码现在正在做的是将单个字符串传递给Task()构造函数。相反,您需要分别设置这些参数的格式:
t = Task("Task_{0}".format(i), "FUNCTION", id2, "task{0}_types".format(i), None)
如果您事先不知道将有多少个参数,可以构建一个列表,并使用*args
方法传递:
params = []
params.append("Task_{0}".format(i))
# ...
params.append("task{0}_types".format(i))
params.append(None)
t = Task(*params)
虽然更好的方法是使用字典(即**kwargs
方法),但这样您就不必关心构造函数参数的顺序:
params = {}
params['something'] = "Task_{0}".format(i)
params['something_else'] = "task{0}_types".format(i)
# ...
params['last_thing'] = None
t = Task(**params)