我有一个函数,它可能返回一个值(那么它必须是一个 int)或表现得像一个过程(即它根本不调用 return,然后有效地返回
None
)。 您可能已经猜到了,它就是这个众所周知的模式中的 main()
函数:
if __name__ == '__main__':
import sys
sys.exit(main(sys.argv))
函数
sys.exit()
就是为此准备的,它同样接受int
和None
。
某些
main()
函数只是执行操作并在没有显式 return
的情况下终止,其他 return
则显式 int
。 我想在常量类型中声明这一点,以便将我的 main()
从“不返回任何内容”更改为“返回退出代码”并不意味着我必须调整类型声明。
我的尝试:
def main(argv: List[str]) -> Optional[int]:
print_something()
(然后 MyPy 抱怨缺少
return
语句。)
def main(argv: List[str]) -> Union[int, None]:
print_something()
(同上。)
def main(argv: List[str]) -> Optional[int]:
print_something()
return
(“错误:预期返回值”:rage:)
def main(argv: List[str]) -> Optional[int]:
print_something()
return None
(噢,来吧。但是有效,是的。我对最终无用的
return None
不满意。我认为Optional
已经明确表示可能不会返回任何内容。)
def main(argv: List[str]) -> Any:
print_something()
(当然可以,但是使用
Any
太笼统了。静态类型检查器不会意外返回字符串。)
有什么我还没想到的方法可以实现我想要的吗?