如果我有这样一个函数:
def foo(name, opts={}):
pass
我想在参数中添加类型提示,我该怎么做呢?我假设的方法给了我一个语法错误:
def foo(name: str, opts={}: dict) -> str:
pass
下面的代码不会抛出语法错误,但似乎不是处理这种情况的直观方法:
def foo(name: str, opts: dict={}) -> str:
pass
我在typing
documentation或谷歌搜索中找不到任何东西。
编辑:我不知道默认参数在Python中是如何工作的,但是为了回答这个问题,我将保留上面的例子。一般来说,做下面的事情要好得多:
def foo(name: str, opts: dict=None) -> str:
if not opts:
opts={}
pass
3条答案
按热度按时间0lvr5msh1#
你的第二种方法是正确的。
该输出
PEP 484中确实没有列出类型提示,但类型提示是函数注解的一种应用,PEP 3107中对此进行了说明。语法部分清楚地说明了关键字参数以这种方式与函数注解一起工作。
我强烈建议不要使用可变的关键字参数。更多信息在这里。
hc8w905p2#
如果你正在使用typing(Python 3.5中引入的),你可以使用
typing.Optional
,这里Optional[X]
等价于Union[X, None]
。它被用来表示None
的显式值是允许的。通过键入。可选:bgtovc5b3#
我最近看到了这样一句俏皮话: