【问题标题】:Is there an efficient way of passing arguments? [duplicate]有没有传递参数的有效方法? [复制]
【发布时间】:2014-07-17 22:38:16
【问题描述】:

除了在参数列表中写四次“编解码器”之外,还有其他方法吗?

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))

【问题讨论】:

    标签: python argument-passing


    【解决方案1】:

    使用*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
    

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

    【讨论】:

      猜你喜欢
      • 2012-02-25
      • 1970-01-01
      • 2011-03-18
      • 1970-01-01
      • 2021-12-20
      • 1970-01-01
      • 1970-01-01
      • 2021-07-19
      • 2016-06-20
      相关资源
      最近更新 更多