Python - Function argument with a comma
我想在一个函数中有一个参数,该函数用多个字符串填充一个数组,因此
1 2
| def Test(colors):
colorarray = [colors] |
我可以填满它
号
但是我总是得到要么是takes 2 positional arguments but 3 were given错误,要么是单个字符串不被接受(例如,TurtleColor(color〔i〕)告诉我"bad color string:"red","blue"。
我知道我可以将字符串作为独立的参数传递,但我有点想避免有这么多不同的参数。
- 你说TurtleColor(Color[i])抛出了bad color string:"red","blue"错误,但是TurtleColor和Color和i是什么?
- 如果需要将*args元组转换为列表,请参见此问题。
您需要将输入参数作为列表读取
1 2 3 4 5
| def Test(*colors):
colorarray = [*colors]
print(colorarray)
Test('red','blue') |
- 如果我有第二个论点,我该怎么办?例如,def test(*colors,size):输入test('red'、'blue'、'100)无效-告诉我它只需要一个关键字参数:"size"edit:test('red'、'blue'、'size=100)有效。尽管不满意,但我想知道我是否可以用一些语法省去"size="这一点。
- @飞叮当:如果尺寸总是在那里,就改变顺序!Test(size,*colors)。
- 所以列表必须排在最后,这不应该是个问题——我希望我不会偶然遇到这样一个情况:我必须输入多个列表。谢谢你的快速建议
- 与[*colors]相比,list(colors)更可读,更向后兼容。
- aran是对的,另一种方法是将颜色作为一个列表参数输入,这样可以保持代码的整洁(特别是如果您有多个参数的话)。然而,我建议使用tuples来代替列表(它是可变的):def Test(colors,size),并称之为Test(('red','blue'),100)。
- 这似乎也起作用了,看起来好多了,谢谢你的小费!