python 调用函数时设定某个关键字的值

对于 sklearn 里面的 SVM 分类器,可以通过下面的方式显示设定几个关键字的值

clf = svm.SVC(
    C=9,
    kernel='rbf',
    tol=1e-3,
    cache_size=200,
    random_state=12345
)

但是对于 dict.get() 就不能显示指定 default = xxx

cases = {
    1: lambda: print(1),
    2: lambda: print(2)
    }
cases.get(1, default=None)
>>> TypeError: get() takes no keyword arguments

有人知道这是为什么吗?

注:上面的例子中每个关键字都有默认值,声明如下

def __init__(
    self,
    *,
    C=1.0,
    kernel="rbf",
    degree=3,
    gamma="scale",
    coef0=0.0,
    shrinking=True,
    probability=False,
    tol=1e-3,
    cache_size=200,
    class_weight=None,
    verbose=False,
    max_iter=-1,
    decision_function_shape="ovr",
    break_ties=False,
    random_state=None,
):
阅读 1.4k
1 个回答

dict.get()的标准调用方式是dict.get(key[, default])
这里的default直接是defaultVal,并不是说函数有一个可以定义的变量名是default
所以正确的调用方法就是

dict.get(key, defaultVal)

而不是

dict.get(key, default=defaultVal)

而且default的默认值是None,所以如果说对于key不存在时希望返回None,其实是可以省略第2个参数。

d={1:'a',2:'b'}
d.get(1,'c')  
# 返回 'a'
d.get(3,'d')
# 返回 'd',因为原来并没有key=3的
d.get(4)
# 没有返回
d.get(5,None)
# 没有返回
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题