是否有传递参数的有效方法?

时间:2014-05-28 15:40:46

标签: python argument-passing

是否可以在参数列表中四次编写'codec'?

codec = 'XVID'
fourcc = cv.CV_FOURCC(codec[0], codec[1], codec[2], codec[3])

当我这样做时,参数只是一个,因为','。join(ls)的结果是一个字符串。有没有办法传递四个参数而不必执行上面示例中的操作?

codec = 'XVID'
ls = list(codec)
fourcc = cv.CV_FOURCC(','.join(ls))

1 个答案:

答案 0 :(得分:4)

使用*args参数解包:

cv.CV_FOURCC(*codec)

使用*前缀传递的任何迭代都会被解压缩到单独的参数中;字符串也是可迭代的,并产生len(string)个参数,每个参数都是一个字符:

>>> codec = 'XVID'
>>> def demo(arg1, arg2, arg3, arg4):
...     print arg1, arg2, arg3, arg4
... 
>>> demo(*codec)
X V I D

您可以使用**将参数视为关键字参数的映射(每个键值对成为参数),并且函数签名中的相同语法可以让您< em>分别将变量参数捕获为元组或映射。见What does ** (double star) and * (star) do for parameters?