Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将格式化字符串作为参数传递给函数_Python_String_Formatting_Arguments - Fatal编程技术网

Python 将格式化字符串作为参数传递给函数

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个参数 非常感谢-非常感谢提供线索。您的代码现在正在

我想知道是否有一种很好的方法来完成以下任务:我想运行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个参数


非常感谢-非常感谢提供线索。

您的代码现在正在做的是将单个字符串传递给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)