如果我有这样的功能:
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
原文由 josh 发布,翻译遵循 CC BY-SA 4.0 许可协议
你的第二种方法是正确的。
这输出
确实它没有列在 PEP 484 中,但类型提示是函数注释的应用,它在 PEP 3107 中有记录 。语法部分 清楚地表明关键字参数以这种方式与函数注释一起工作。
我强烈建议不要使用可变关键字参数。更多信息 在这里。