繁体   English   中英

为什么 python strtobool 方法返回 Int 而不是 bool?

[英]Why does the python strtobool method return an Int instead of a bool?

strtobool是来自 python 标准库的出色 function。

然而,它返回一个 int 而不是 bool,需要包装它,例如bool(strtobool(x))

从表面上看,这似乎不直观且具有误导性,而且很容易忘记,尤其是在像 python 这样松散类型的语言中。
导致这种方法的设计决策是什么?

我不知道为什么strtobool()返回一个 int。 在大多数情况下,int 可以用作 bool,但是,如果您确实需要 bool,那么我建议您在脚本中创建一个新的 function,如下所示:

from distutils.util import strtobool as stb
def strtobool(string: str)->bool: return bool(stb(string))

这允许调用strtobool()所以它返回一个布尔值。

可能是任何人的猜测。 distutils已被弃用并在 Python 3.12 中被删除,根据PEP 632 ,特别是关于strtobool ,建议是自己重新实现它:

对于这些功能以及此处未提及的任何其他功能,您需要自己重新实现这些功能。 可以在https://docs.python.org/3.9/distutils/apiref.html找到旧文档

  • distutils.dir_util.create_tree
  • distutils.util.change_root
  • distutils.util.strtobool

因此,简而言之,不要使用它,在您的版本中,请随意返回适当的bool

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM