MyPy 可以检测到什么,不能检测到什么?
What can MyPy detect and what can it not?
我刚开始使用 MyPy 为我的 python 程序添加更多静态类型。我试过这个:
import sys
def summe (a: int, b: int):
print (a + b)
def main():
x: int = 10
y: int = 20
z: str = '30'
summe (x, y)
summe (x, z)
if __name__ == '__main__':
sys.exit(main())
这显然是一个类型错误并在运行时崩溃,但 MyPy 说:Success: no issues found in 1 source file
我是不是做错了什么,错过了一些设置?我有 Windows 10,Python 3.10,Eclipse 下最新的 MyPy。
您的 main
不是 type-checked,因为您没有对其进行注释。添加注释:
def main() -> None:
而第二个 summe
调用将如您所料导致类型错误。
Return值用->
:
表示
# -> Return value
def summe (a: int, b: int) -> None:
print (a + b)
# -> Return value
def main() -> None:
x: int = 10
y: int = 20
z: str = '30'
summe (x, y)
summe (x, z)
if __name__ == '__main__':
sys.exit(main())
我刚开始使用 MyPy 为我的 python 程序添加更多静态类型。我试过这个:
import sys
def summe (a: int, b: int):
print (a + b)
def main():
x: int = 10
y: int = 20
z: str = '30'
summe (x, y)
summe (x, z)
if __name__ == '__main__':
sys.exit(main())
这显然是一个类型错误并在运行时崩溃,但 MyPy 说:Success: no issues found in 1 source file
我是不是做错了什么,错过了一些设置?我有 Windows 10,Python 3.10,Eclipse 下最新的 MyPy。
您的 main
不是 type-checked,因为您没有对其进行注释。添加注释:
def main() -> None:
而第二个 summe
调用将如您所料导致类型错误。
Return值用->
:
# -> Return value
def summe (a: int, b: int) -> None:
print (a + b)
# -> Return value
def main() -> None:
x: int = 10
y: int = 20
z: str = '30'
summe (x, y)
summe (x, z)
if __name__ == '__main__':
sys.exit(main())