完全有可能这个问题是重复的,但我不知道这个概念叫什么,所以我甚至不知道如何搜索它。
我是Python的新手并尝试从Caffe example了解此功能:
def conv_relu(bottom, ks, nout, stride=1, pad=0, group=1):
conv = L.Convolution(bottom, kernel_size=ks, stride=stride,
num_output=nout, pad=pad, group=group)
return conv, L.ReLU(conv, in_place=True)
我认为stride=1
函数定义中的参数pad=1
,conv_relu
等是默认的初始值,但是kernel_size=ks
,stride=stride
是什么, L.Convolution
调用意味着什么?它有点像名字/价值对吗?
如果不出意外,有人可以告诉我这叫什么吗?
答案 0 :(得分:6)
这些是关键字参数。
some_function(x=y, z=zz)
x
是声明函数时参数的名称,y
是传入的值。
使用关键字参数的原因:
答案 1 :(得分:5)
您使用关键字参数 call expression。每个name=value
对为函数接受的特定参数赋值。
关键字参数可以按任何顺序使用。如果函数签名中的命名参数具有默认值,则调用中的值将覆盖该默认值。如果省略特定参数,则使用默认值。
答案 2 :(得分:4)
在Python中,可以通过位置或关键字提供参数。
例如,假设您具有以下功能:
def foo(bar, baz=1, qux=2):
pass
您可以将其称为foo(3)
,因此在被调用者范围内,bar
将为3
。 baz
和qux
将分别分配默认值 - 1
和2
- 因此您无需明确提供这些值。
您也可以使用关键字参数(即您要搜索的字词)来调用此函数。与bar
作为命名参数的完全相同的调用将是foo(bar=3)
。
当然,我们宁愿只使用foo(3)
,因为它更简洁,除非有特定的理由使用命名参数。这种情况的一个例子是,如果我们希望为qux
提供非默认参数,同时保持baz
的默认参数不变:foo(3, qux=4)
。