【发布时间】:2020-02-06 17:20:11
【问题描述】:
我们公司开始使用 Pythons Typing,因为它在较新的 Python3 版本中可用。 我们正在使用“mypy”linter 来帮助在我们的脚本中输入错误。 当我在脚本头初始化空变量时会出现我的问题,例如:
VARIABLE_NAME: str = None
由于稍后会设置,我目前的知识是您应该使用 None 初始化这些变量。
mypy 认为这是不正确的并显示以下错误:
Incompatible types in assignment (expression has type "None", variable has type "str")mypy(error)
现在我想知道。 我应该用空字符串初始化变量吗? 我不确定这里的最佳做法是什么。
【问题讨论】:
-
你为什么用 None 初始化?您应该只在变量实际被分配到时进行初始化。
-
这家公司的常见做法是在脚本开头附近初始化全局变量,例如 ConfigParsers。
-
如果要使用字符串,可以将其初始化为
"";一个空字符串。 -
是的,我正在考虑这样做,但这对于复杂的数据类型(例如日期时间)并不能很好地工作,所以我想知道这是否是处理这个问题的正确方法。 @monkut 下面的答案似乎是这样做的正确方法。
-
我投票决定重新打开,因为这种“正确的初始化方式”明显不同于所谓的重复“无正确提示”。后者是一个可能的答案,另一个答案(我无法提供,因为它已关闭)是如果
None实际上从来不是真正的值,那么您应该在不初始化的情况下提示:var: str并且稍后再分配 @987654327 @。副本是否合适取决于问题中未提及的意图。
标签: python python-3.x mypy