Python中对应Dart空断言操作符(!)的类型检查语法是什么?
Python中如何简洁告知类型检查器变量非空?
我用Flutter/Dart做前端、Python做后端搭建网站,很喜欢Dart严谨的静态检查(能大幅减少调试时间),所以也开始在Python中使用类型检查。
在Dart/Flutter里,我可以这样指定变量为int或null类型:
final int? myInt = 1;
后续使用myInt时,通过添加感叹号就能告知Dart类型检查器该变量当前非空:
final int myIntNotNull = myInt!;
在Python中,我可以类似地指定可空的int类型:
myInt:int|None = 1
我的问题是:有没有同样简洁的方式告知Python类型检查器,我确定当前myInt并非null?
解决方案
有几种简洁的方式可以实现类似Dart非空断言的效果:
- 使用
typing.cast做类型断言:和Dart的!一样,仅给类型检查器提供提示,运行时不会做实际校验,需要开发者自行保证变量非空:from typing import cast myIntNotNull: int = cast(int, myInt) - 使用
assert语句:既给类型检查器明确变量非空的提示,又能在运行时做非空校验,适合需要确保变量状态的场景:assert myInt is not None myIntNotNull: int = myInt # 类型检查器会识别此时myInt为int类型 - 紧凑的walrus运算符写法(Python 3.10+):一行完成赋值与断言,类型检查器同样会认可变量的非空类型:
assert (myIntNotNull := myInt) is not None
内容的提问来源于stack exchange,提问作者Martin Reindl
相关产品推荐
相关产品推荐

