我们知道如何bool()作用于各种Python对象,如str,int,list.
这是一个相反的问题.
您可以将bool转换为int as
>>> int(True)
1
>>> int(False)
0
Run Code Online (Sandbox Code Playgroud)
我认为有点意义,但我们得到了字符串
>>> str(False)
'False'
>>> str(True)
'True'
Run Code Online (Sandbox Code Playgroud)
我没有得到,因为它首先似乎暗示了False和之间的某种关系'False',这在代码层面上似乎只是相关的.如果以这种方式处理代码中的内容,那么它是如何工作的......
>>> str(not True)
'False'
Run Code Online (Sandbox Code Playgroud)
其次,它的一致性并不明显,因为
>>> bool(str(False))
True
Run Code Online (Sandbox Code Playgroud)
我的问题是...有没有我们允许投一个原因bool,以str这种方式?list例如,不允许它......
>>> list()
[]
>>> bool()
False
>>> bool(list())
False
>>> list(bool())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'bool' object is not iterable
Run Code Online (Sandbox Code Playgroud)
用于调试.如果您不能将某个东西转换为字符串,则无法打印它.如果要打印数据结构以进行调试,则需要能够将每个元素转换为字符串.这str是记录下来的 ......
返回一个包含对象的可打印表示的字符串.
如果以这种方式处理代码中的内容,那么它是如何工作的......
Run Code Online (Sandbox Code Playgroud)>>> str(not True) 'False'
not True解析False然后传递给str.它与foo(1 + 1) foo接收2 的方式类似.
其次,它的一致性并不明显,因为
Run Code Online (Sandbox Code Playgroud)>>> bool(str(False)) True
铸造不保证往返.例子是int(float(2.34))或int(unichr(97)).
将某些东西转换为人类的字符串之间存在重要区别,这就是做什么str,并将某些内容转换为字符串以进行编组,这些字符串必须往返.有专门的包装,如编组marshal或json编组.
但是在Python中思考bool和投射是错误的方法str.如上所述,str返回可打印的表示,而不是机器可读的表示.bool是为了问"这个表达的真实性是什么"?来自文档......
使用标准真值测试程序转换x.
"True"并且"False"都是真的.如果他们添加了一个特殊情况,bool那将是非常不一致的.
| 归档时间: |
|
| 查看次数: |
134 次 |
| 最近记录: |