strtoool是python标准库中的一个很棒的函数。
然而,它返回一个int而不是bool,需要对其进行包装(例如bool(strtobool(x))
(。
从表面上看,这似乎是不直观和误导性的,而且很容易忘记,尤其是在python这样的松散类型语言中
导致这种方法的设计决策是什么?
在这一点上,可能是任何人的猜测。根据PEP632,distutils
已被弃用,并在Python 3.12中被删除,特别是关于strtobool
,建议您自己重新实现:
对于这些功能以及此处未提及的任何其他功能,您需要自己重新实现该功能。遗留文档可在https://docs.python.org/3.9/distutils/apiref.html
distutils.dir_util.create_tree
distutils.util.change_root
distutils.util.strtobool
因此,简而言之,不要使用它,在您的版本中,可以随意返回适当的bool
。
我不知道strtobool()
为什么返回int。在大多数情况下,int可以用作bool,但是,如果您确实需要一个bool,那么我建议您在脚本中创建一个新函数,如下所示:
from distutils.util import strtobool as stb
def strtobool(string: str)->bool: return bool(stb(string))
这允许调用strtobool()
,因此它返回一个bool。