2017-08-19 78 views
-7

什麼是蟒蛇在下面的函數中使用等號(=)等號(=)函數參數在Python

res=cv2.bitwise_and(frame,frame,mask=mask) 

我們爲什麼需要它mask= mask謝謝

+1

他們被稱爲默認參數 – Rahul

+0

說得一般,這是一個_keyword argument_。但沒有更多的上下文,這可能是我們可以真正告訴你的。 –

+0

第一個掩碼是一個命名參數,第二個掩碼是你的代碼中定義的一個變量。這是一種方法來傳遞[一些參數](https://docs.python.org/2/tutorial/controlflow.html#keyword-arguments) – PRMoureu

回答

0

在Python中,你可以定義可選的參數,如:

def func(par, mask=1): 
    pass 

,當你調用func功能,您可以選擇指定參數mask

func(2,mask=2) 

讓我們假設你有打電話之前func功能

,你可以這樣調用

func(2,mask=mask) 

回到你的問題我們有理由指定mask=mask已分配值掩碼變量而不只是調用像func(2,3)這樣的函數是我們可能有多個可選參數,如

def func2(par1,opt1=1,opt2=3): 
     pass 

在這裏,當你調用func2並希望爲par1 and opt2你有這樣func2(2,opt2=5)

0

第一個mask是在函數定義中定義的變量。第二個mask是你傳遞給函數的一個參數。 =在那裏,因爲函數定義必須要求它在那裏,因爲它是一個默認參數。

0

你可以使用它的函數的參數的明確defenition調用傳遞價值。

例如你有一個功能defenition:

def add_action(action,time=datetime.now, mode=0):

在這個函數的時間和模式已經預定義的值(因爲這個值可以是此功能最頻繁使用),並在你的情況下要改變這種預定義值,你只能在需要的方向送他們:

add_action(action, datetime(2017, 08, 19), 1) 

或通過其名稱發送,如果要重新定義只有1個參數:

add_action(action, mode=2) 

所以,時間會有預定義的值。你

也可以寫功能,如:

def foo(par1, **kwargs) 

這裏PAR1是強制性的參數,以及其他參數,你將通過發送姓名的功能,將在** kwargs該actualy是關鍵字字典。

所以,如果你調用一個函數:

foo(value1, mode=1, date=now(), message='Hello') 

在函數體** kwargs將有下一個值:

{ mode:1, date:datetime(2017, 08, 19, 14, 24, 56, 22393),//result of function now() message:'Hello' }