如果我有这样的功能:
def foo(name, opts={}): pass
我想在参数中添加类型提示,我该怎么做?我假设的方式给了我一个语法错误:
def foo(name: str, opts={}: dict) -> str: pass
以下不会引发语法错误,但它似乎不是处理这种情况的直观方法:
def foo(name: str, opts: dict={}) -> str: pass
typing我在文档或 Google 搜索中找不到任何内容。
typing
编辑:我不知道默认参数在 Python 中是如何工作的,但为了这个问题,我将保留上面的示例。一般来说,最好执行以下操作:
def foo(name: str, opts: dict=None) -> str: if not opts: opts={} pass
你的第二种方法是正确的。
def foo(opts: dict = {}): pass print(foo.__annotations__)
这输出
{'opts': <class 'dict'>}
确实,它没有在PEP 484中列出,但是类型提示是函数注释的应用,在 PEP 3107 中有记录。语法部分清楚地表明关键字参数以这种方式与函数注释一起使用。
我强烈建议不要使用可变关键字参数。更多信息在这里。