我可以区分 0 和 False 吗?
我有一个代码里的函数,它会根据一些条件返回列表中的某个位置。如果这些条件为真,函数就会给我一个位置。接下来的函数会用到这个位置。这个返回的位置可能是0,但如果条件不成立,函数就会返回False。接下来的函数会检查“position是否等于false”,但我刚刚了解到,它会把0也当作false来理解。
我能区分0和False吗?其实我不想返回一个像-123456这样的数字,因为我想把代码放在我的论文里。
2 个回答
0
可能是这样的:
0 == False # True
# however...
0 is False # False
4
不要使用特殊的标记值来表示错误。如果你的函数应该返回一个索引,那它返回的每个值都应该是一个有效的索引。如果出现问题,就应该抛出一个异常来表示。
def foo() -> int:
if <condition>:
return computed_index()
raise ValueError("No valid index")
try:
position = foo()
except ValueError:
# do whatever position == False was supposed to do
另一种做法是返回一个绝对不可能是有效索引的值,这个值的存在就是为了表示没有其他值,比如说None
。
def foo() -> int | None:
if <condition>:
return computed_index()
if (position := foo()) is None:
handle error
...