小编典典

使用类型提示时如何向函数添加默认参数?

all

如果我有这样的功能:

def foo(name, opts={}):
  pass

我想在参数中添加类型提示,我该怎么做?我假设的方式给了我一个语法错误:

def foo(name: str, opts={}: dict) -> str:
  pass

以下不会引发语法错误,但它似乎不是处理这种情况的直观方法:

def foo(name: str, opts: dict={}) -> str:
  pass

typing我在文档或 Google
搜索中找不到任何内容。

编辑:我不知道默认参数在 Python 中是如何工作的,但为了这个问题,我将保留上面的示例。一般来说,最好执行以下操作:

def foo(name: str, opts: dict=None) -> str:
  if not opts:
    opts={}
  pass

阅读 72

收藏
2022-03-14

共1个答案

小编典典

你的第二种方法是正确的。

def foo(opts: dict = {}):
    pass

print(foo.__annotations__)

这输出

{'opts': <class 'dict'>}

确实,它没有在PEP
484
中列出,但是类型提示是函数注释的应用,在 PEP 3107
中有记录。语法部分清楚地表明关键字参数以这种方式与函数注释一起使用。

我强烈建议不要使用可变关键字参数。更多信息在这里

2022-03-14