我正在阅读比尔·卢巴诺维克(Bill Lubanovic)的《Python3入门》一书,遇到了一些我不确定是Python偏好还是只是为了描述其他东西而“简化”的内容。
它是关于如何使用块而不是一次性写入文件的说明。
poem = '''There was a young lady named Bright,
Whose speed was far faster than light;
She started one day
In a relative way,
And returned on the previous night.'''
fout = open('relativity', 'wt')
size = len(poem)
offset = 0
chunk = 100
while True:
if offset > size:
break
fout.write(poem[offset:offset+chunk])
offset += chunk
fout.close()
我本来想问为什么它使用
while True
而不是while (offset > size)
,但我决定自己尝试一下,并发现在我的Python控制台中while (offset > size)
实际上没有做任何事情。这只是控制台中的一个bug,还是Python真的要求你将条件放入while循环内部?通过尽可能简化所有更改,这似乎非常冗长。
(我来自Java、C#和JavaScript背景,在这些语言中,将条件作为循环定义是标准的。)
编辑
由于xnx的评论,我意识到我对条件的逻辑不正确。
这使我回到了一个更清晰的问题,即Python是否喜欢使用
while True
并在循环内部使用break
来使用条件,还是作者在尝试解释不同的概念时犯了错误?
while offset <= size
,是吗? - xnxwhile (offset > size)
这段代码没有任何效果,因为offset
最初并不大于size
。 因此,该循环永远不会执行。 - user2555451