2017-02-01 2 views
0

私は、カメラを制御するためにいくつかのPythonコードを見ています。 srcパラメータが0に設定されていることがわかります。 srcが指定されていない場合は0が使用され、それ以外の場合はsrcが使用されますか?私はこのこの__init __()メソッドの定義のデフォルトのパラメータ値は?

vs = WebcamVideoStream(3) 

ような何かを行う場合

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) 

ので、その後src3でしょうか? と私はこの

vs = WebcamVideoStream() 

をすれば、その後src0でしょうか?

+2

実際、デフォルトパラメータの背後にあるコンセプトです。 'WebcamVideoStream(src = 14)'のように**明示的に**パラメータに名前を付けることもできます。 –

+1

https://docs.python.org/3/tutorial/controlflow.html#keyword-arguments –

+1

@ cricket_007:Nah、あなた[デフォルトの引数値](https://docs.python.org/3/tutorial/controlflow.html#default-argument-values)のセクションを参照してください。キーワード引数は構文的には類似していますが、あまり関連性はありません。 – user2357112

答えて

0

クイックアンサーは - はい。

あなたが実行している場合:

vs = WebcamVideoStream(3) 

srcは、あなたが実行した場合3

に等しい:

vs = WebcamVideoStream() 

srcが0(デフォルト値)に等しいです。

追加のPythonの機能として、Pythonはあなたのメソッドでどのくらいの引数を使用するのか(非常に一般的な説明ですが、わかりました)、* argsと** kwargsをサポートしています。

私がここに投稿した** kwargsからを使用していくつかの例: http://codepad.org/E7m3PnVr

P.S.

1)あなたの関数に渡される引数の数がわからない場合、つまり関数に任意の数の引数を渡すことができる場合は、* argsを使用します。

2)** kwargsでは、あらかじめ定義していない名前付き引数を扱うことができます。

関連する問題