【问题标题】:What is the correct way of initialising variables when using typing使用打字时初始化变量的正确方法是什么
【发布时间】: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


【解决方案1】:

我相信这会写成:

from typing import Optional

VARIABLE_NAME: Optional[str] = None

【讨论】:

  • 这似乎是正确的方法,非常感谢!不知道Optional
猜你喜欢
  • 1970-01-01
  • 2021-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多