2024-05-01 21:57:50 发布
网友
我有一个包含以下内容的文件:
a b c d
我使用以下代码在Python中阅读:
根据docs
if f.readline() returns an empty string, the end of the file has been reached
为什么我要进入一个无限循环?在
操作符is测试两个引用是否引用了完全相同的对象。在本例中,您需要一个如您所述的相等性检查。在
is
发生无限循环是因为尽管它返回了'',但它是str的不同实例。不同的实例,但值相同。在
''
str
Python可以也可以不选择作为一种优化来恢复现有的str对象(毕竟它们是不可变的)。但是,一般情况下,您不应该依赖于这种类型的行为,除非文档中另有说明(比如None,因为它是NoneType的唯一实例)。在
None
NoneType
试试这个
f = open('foo.txt') while 1: line = f.readline() if not line: break print line
这很有趣。在
如果你更换
while w is ''
与
while w != ''
代码将成功运行。在
这意味着readline()返回空字符串的新实例,而不是返回执行时获得的全局实例
s = '' t = '' assert s is t
操作符
is
测试两个引用是否引用了完全相同的对象。在本例中,您需要一个如您所述的相等性检查。在发生无限循环是因为尽管它返回了
''
,但它是str
的不同实例。不同的实例,但值相同。在Python可以也可以不选择作为一种优化来恢复现有的
str
对象(毕竟它们是不可变的)。但是,一般情况下,您不应该依赖于这种类型的行为,除非文档中另有说明(比如None
,因为它是NoneType
的唯一实例)。在试试这个
这很有趣。在
如果你更换
与
代码将成功运行。在
这意味着readline()返回空字符串的新实例,而不是返回执行时获得的全局实例
相关问题 更多 >
编程相关推荐