2017-08-19 38 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' }