【问题标题】:Default parameter value in this __init__() method's definition?此 __init__() 方法定义中的默认参数值?
【发布时间】:2017-06-18 21:40:37
【问题描述】:

我正在查看一些用于控制相机的 python 代码,但由于是 python 新手,我在理解它时遇到了一些困难。我看到src 参数设置为0。这是否意味着如果没有给定src,则将使用0,否则将使用给定的src

class WebcamVideoStream:

    def __init__(self, src=0):
        # initialize the video camera stream and read the first frame
        # from the stream
        self.stream = cv2.VideoCapture(src)

所以如果我做这样的事情

vs = WebcamVideoStream(3)

那么src 将是3? 如果我这样做

vs = WebcamVideoStream()

那么src 将是0

【问题讨论】:

  • 是的,这就是默认参数背后的概念。您还可以明确地命名参数,例如WebcamVideoStream(src=14)
  • @cricket_007:不,你想要default argument values 上的部分。关键字参数在语法上相似但不是很相关。
  • 函数定义中的这种构造类型称为“关键字参数”,如果在实际调用函数时省略默认值,则始终包含默认值。
  • @user2357112 对。我错过了OP没有提到用Stream(src=<value>)打电话

标签: python named-parameters default-parameters


【解决方案1】:

快速回答是 - 是的。

如果你运行:

vs = WebcamVideoStream(3)

src 等于 3

如果你运行:

vs = WebcamVideoStream()

src 等于 0(默认值)。

作为 Python 的一项附加功能,Python 支持 *args 和 **kwargs 用于您不确定方法中将使用多少参数和哪些参数的情况(这是非常笼统的解释,但我希望它很清楚)。

我在这里发布的一些使用 **kwargs 的示例: http://codepad.org/E7m3PnVr

附:

1) 当您不确定可以向函数传递多少参数时使用 *args,即它允许您向函数传递任意数量的参数。

2) **kwargs 允许您处理未事先定义的命名参数

【讨论】:

    猜你喜欢
    • 2011-12-24
    • 2012-12-16
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 2014-04-18
    • 2012-09-18
    • 2012-08-04
    • 2021-11-18
    相关资源
    最近更新 更多