python 中的未知语句
Unknown statement in python
一个错字导致了我不明白的陈述。有人可以解释冒号在这种情况下的用途吗?
>>> test : 'what does this do?'
我认为它可能是一个像隐式元组一样的隐式字典
>>> 1,2
(1, 2)
但是 return 什么都没有。于是开始胡思乱想,发现报错
>>> True : 'fs'
File "<stdin>", line 1
SyntaxError: illegal target for annotation
所以我查找了那个错误,发现 PEP 526 我也不明白:-)
>>> xx : int
>>> xx = 'sdfs'
>>> xx
'sdfs'
我的意思是它不是类型检查,因为我可以分配一个字符串。有人可以帮我理解这个吗?
这些是 python 类型提示。
由于 python 是一种动态类型的语言(不像 Java),这些在运行时不会强制执行。但是,它们充当额外级别的文档。当您将字符串传递给需要 int 的函数时,您的 linter(例如 pylint)可以使用它们发出警告。您的 IDE 也可以使用它们来增强自动完成功能。
一些可以帮助您更好地使用类型提示的软件包:
字符串类型提示的目的是解决循环依赖。
Parent.py
from .Parent import Parent
class Child(Parent):
parent: Parent
pass
Parent.py
# from .Child import Child # This would cause a circular dependency
class Parent:
child: 'Child' # String type hint required as Child cannot be imported
pass
一个错字导致了我不明白的陈述。有人可以解释冒号在这种情况下的用途吗?
>>> test : 'what does this do?'
我认为它可能是一个像隐式元组一样的隐式字典
>>> 1,2
(1, 2)
但是 return 什么都没有。于是开始胡思乱想,发现报错
>>> True : 'fs'
File "<stdin>", line 1
SyntaxError: illegal target for annotation
所以我查找了那个错误,发现 PEP 526 我也不明白:-)
>>> xx : int
>>> xx = 'sdfs'
>>> xx
'sdfs'
我的意思是它不是类型检查,因为我可以分配一个字符串。有人可以帮我理解这个吗?
这些是 python 类型提示。
由于 python 是一种动态类型的语言(不像 Java),这些在运行时不会强制执行。但是,它们充当额外级别的文档。当您将字符串传递给需要 int 的函数时,您的 linter(例如 pylint)可以使用它们发出警告。您的 IDE 也可以使用它们来增强自动完成功能。
一些可以帮助您更好地使用类型提示的软件包:
字符串类型提示的目的是解决循环依赖。
Parent.py
from .Parent import Parent
class Child(Parent):
parent: Parent
pass
Parent.py
# from .Child import Child # This would cause a circular dependency
class Parent:
child: 'Child' # String type hint required as Child cannot be imported
pass