Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python是否将var初始化为None?_Python_Pycharm_Nonetype - Fatal编程技术网

Python是否将var初始化为None?

Python是否将var初始化为None?,python,pycharm,nonetype,Python,Pycharm,Nonetype,有什么区别 myVar: myCustomClassType vs 我这样问是因为Pycharm督察和后者一起尖叫: Expected type 'myCustomClassType', got 'None' instead 据我所知,没有一个也是对象,因此本次检查表明存在类型冲突。 我的问题是哪种形式更好?你需要这样做 myVar = None 没有类型注释。您可以稍后分配myCustomerClassType实例。您需要这样做 myVar = None 没有类型注释。您可以稍后分配

有什么区别

myVar: myCustomClassType 
vs

我这样问是因为Pycharm督察和后者一起尖叫:

Expected type 'myCustomClassType', got 'None' instead
据我所知,没有一个也是对象,因此本次检查表明存在类型冲突。 我的问题是哪种形式更好?

你需要这样做

myVar = None
没有类型注释。您可以稍后分配myCustomerClassType实例。

您需要这样做

myVar = None

没有类型注释。您可以稍后分配myCustomerClassType实例。

第一个示例是,使用类型提示让类型检查器知道将特定范围内的标识符与某个类型关联

两者的区别在于

myVar: myCustomClassType 
不为myVar赋值,而第二个为myVar赋值。如果希望myVar具有None值或myCustomClassType值,则应使用类型模块中的泛型类型:


如果您的变量应该只包含myCustomClassType值,那么您应该使用第一个变量,并确保在使用它之前分配一个值

第一个是的示例,您使用类型提示让类型检查器知道将特定范围内的标识符与某个类型关联

两者的区别在于

myVar: myCustomClassType 
不为myVar赋值,而第二个为myVar赋值。如果希望myVar具有None值或myCustomClassType值,则应使用类型模块中的泛型类型:


如果您的变量应该只包含myCustomClassType值,那么您应该使用第一个变量,并确保在使用它之前分配一个值

只有注释的名称在语法上是合法的,但实际上并不创建变量

>>> foo: int
>>> foo
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'foo' is not defined
如果您定义一个函数,如

def foo(bar: int = None):
    ...

mypy将根据指定的默认值将条形图的类型自动升级为可选的[int]。但是,对于变量注释,它似乎没有这样做。PyCharm似乎也在效仿。

仅带有注释的名称在语法上是合法的,但实际上并不创建变量

>>> foo: int
>>> foo
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'foo' is not defined
如果您定义一个函数,如

def foo(bar: int = None):
    ...

mypy将根据指定的默认值将条形图的类型自动升级为可选的[int]。但是,对于变量注释,它似乎没有这样做。PyCharm似乎也在效仿。

没有一个对象确实像Python中的任何东西一样,但不是myCustomClassType实例。这为什么令人惊讶?你也可以写foo:int=bar,更好的取决于你想要实现什么。我不知道为什么要用一个类型注释变量,然后将它绑定到另一个不兼容类型的实例。但你可能有很好的理由这么做。你有吗?高友:初始化。。。?我一直喜欢初始化,但在本例/上下文中,可能我错了。没有一个对象确实像Python中的所有对象一样,但不是myCustomClassType实例。这为什么令人惊讶?你也可以写foo:int=bar,更好的取决于你想要实现什么。我不知道为什么要用一个类型注释变量,然后将它绑定到另一个不兼容类型的实例。但你可能有很好的理由这么做。你有吗?高友:初始化。。。?我一直喜欢初始化,但在这种情况下,我可能错了。