各位编码员早上好。我有一个关于使用 Python 查找文件中特定行的问题。一种方法是使用 if line.startswith(word) 或使用 if not line.startswith(word) 然后继续。两者有什么区别?对于较大的文本程序,一个比另一个更好吗?我应该养成将来使用哪一个的习惯?例如:更好的处理速度,更少的组件负载。我已经在较小的程序上进行了测试,运行时几乎没有差异。
fhand = open('mbox-short.txt')
for line in fhand:
line = line.rstrip()
if line.startswith('From:'):
print(line)
VS
fhand = open('mbox-short.txt')
for line in fhand:
line = line.rstrip()
if not line.startswith('From:'):
continue
print(line)
谢谢您的回答。
import time
t0= time.time()
fhand = open('mbox-short.txt')
for line in fhand:
line = line.rstrip()
if line.startswith('From:'):
print(line)
t1 = time.time() - t0
print ('Time Elapsed:',t1)
运行时间速度 1:已用时间:0.013382196426391602
运行时间速度 2:已用时间:0.0033702850341796875
运行时间速度 3:已用时间:0.0040471553802490234
import time
t0= time.time()
fhand = open('mbox-short.txt')
for line in fhand:
line = line.rstrip()
if not line.startswith('From:'):
continue
print(line)
t1 = time.time() - t0
print ('Time Elapsed:',t1)
运行时间速度1:已用时间:0.0037872791290283203
运行时间速度 2:已用时间:0.003139495849609375
运行时间速度 3:已用时间:0.0030825138092041016
这两种风格在性能方面没有明显差异。
这是编码风格和可读性的问题。
在这个特定的示例中,我认为两种形式的代码都是完全可以理解的。
就个人而言,我更喜欢带有“继续”的变体。
这种编码风格可以称为“早期返回”(或者,我猜,在这种情况下,“早期继续”)。这个想法是,首先排除不相关的案例,然后处理相关的案例。请参阅这个软件工程问题,了解“提前返回”模式的讨论。
如果您尽早使用“继续”来忽略不相关的行,那么额外的好处是,在相关行上运行的代码会缩进少一级(它更靠近屏幕左侧,有助于可读性)。