我有一个函数可能返回一个值(然后它必须是一个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
(“错误:预期的返回值”:怒气:)
def main(argv: List[str]) -> Optional[int]:
print_something()
return None
(噢,来吧。但是有效。是的。我最后对无用的return None
感到不满意。我认为Optional
已经明确表示不会有任何遗漏。)< / p>
def main(argv: List[str]) -> Any:
print_something()
(当然可以,但使用Any
过于笼统。静态类型检查器无法找到意外返回的字符串。)
我有没有想过要实现我想要的东西?