Python:变量类型注释和默认初始化为无

我正在将一个小的代码库从Python 2重构到3(特别是3.4),而使代码库更好,更可维护的方法之一就是解决Pycharm展示的所有基于PEP的小问题。

问题之一是变量的使用,这些变量可能为空/未初始化。一个例子:

if condition1:
    variable1 = parse_something(a_parameter)
elif condition2:
    variable1 = parse_something(another_parameter)

local_call(variable1)

正确的做法是在所有用法之前声明变量。因此,我想在声明的同时注释变量类型。这就是我要做的:

variable1 = None  # type: ArgumentParser
if condition1:
    variable1 = 5
elif condition2:
    variable1 = 10

local_call(variable1)

注释课程类型为我提供了更多的代码完成选项。但是,PEP扫描抱怨以下内容:Expected type 'ArgumentParser',got 'None' instead。没错解决方案似乎是通过键入以下内容将变量注释为可选:

from typing import Optional

variable1 = None  # type: Optional[ArgumentParser]
if condition1:
    variable1 = 5
elif condition2:
    variable1 = 10

local_call(variable1)

但是,该软件包似乎并非在应运行该软件的任何地方都可用。而且,再三考虑,我问自己:为什么我需要将变量注释为Optional?这基本上不是所有变量的标准行为吗?

所以,我的困境是:我不明白为什么我需要一个可选的,可单独安装的软件包来注释一个变量可以设置为None的原因,无论如何我还是认为这是Python中所有变量的默认值?我能以其他方式解决吗?

注1:我知道不再支持Python 3.4。在需要运行该软件的系统上,没有可用的其他版本,因为这些平台都在LTS Linux版本上运行。

lovewang13 回答:Python:变量类型注释和默认初始化为无

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3102893.html

大家都在问