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