【发布时间】:2019-02-09 13:10:27
【问题描述】:
我正在从配置为输入的通用 IO (GPIO) 中读取一个值,它返回一个 0 或 1 的字符串。我看到了两种将其转换为布尔值的简单方法:
bool(int(input_value))
或
not not int(input_value)
哪个最Pythonic?还有比上面介绍的更多的 Pythonic 方式吗?
【问题讨论】:
标签: python
我正在从配置为输入的通用 IO (GPIO) 中读取一个值,它返回一个 0 或 1 的字符串。我看到了两种将其转换为布尔值的简单方法:
bool(int(input_value))
或
not not int(input_value)
哪个最Pythonic?还有比上面介绍的更多的 Pythonic 方式吗?
【问题讨论】:
标签: python
方法有很多,但我想提出以下几点:
{'0': False, '1': True}[input_value]
如果您得到的值与您期望的不同(由于错误、故障、API 更改等),这具有引发异常的优势。
到目前为止,所有其他选项都将静默接受任何字符串作为输入。
【讨论】:
如果您的input_value 必须是"1" 或"0",并且您希望布尔值在"1" 时为真,那么您需要布尔表达式
input_value=="1"
例如
bool_var = (input_value=="1")
如果input_value 等于"1",这将给出True,如果它等于"0"(或其他任何值),则给出False。
【讨论】: