是否可以在参数列表中四次编写'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))
答案 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?