2024-04-26 18:17:22 发布
网友
这两个函数有什么区别?我见过有人在类型注释的周围加上引号,还有一些时候把它们漏掉了,但我不明白为什么人们会选择使用其中一个。在
def do_something(entity: Entity): pass def do_something(entity: 'Entity'): pass
这些都有优点或缺点吗?在
根据pep484,在类型提示后面加引号是在生成Forward Reference时有意义的事情。在这种情况下,在名称周围加引号是为了抑制可能发生的名称错误。在
在其他情况下,不要使用引号,这不会产生您想要的提示:
>>> def bad_foo(a: 'int'): ... pass >>> def good_foo(a: int): ... pass >>> bad_foo.__annotations__['a'] == good_foo.__annotations__['a'] False
虽然目前类型跳棋(mypy,至少)似乎没有区别对待这些问题,但我不确定未来是否会如此。最好是清楚,不要使用引号时,你实际上并不需要。在
根据pep484,在类型提示后面加引号是在生成Forward Reference时有意义的事情。在这种情况下,在名称周围加引号是为了抑制可能发生的名称错误。在
在其他情况下,不要使用引号,这不会产生您想要的提示:
虽然目前类型跳棋(mypy,至少)似乎没有区别对待这些问题,但我不确定未来是否会如此。最好是清楚,不要使用引号时,你实际上并不需要。在
相关问题 更多 >
编程相关推荐