其他
Python高能小技巧:不要在for与while循环后面写else块
导读:本文会详细介绍一个小技巧,帮助你用符合Python风格的方式(Pythonic方式)来编写程序。
for i in range(3):
print('Loop', i)
else:
print('Else block!')
>>>
Loop 0
Loop 1
Loop 2
Else block!
for i in range(3):
print('Loop', i)
if i==1:
break
else:
print('Else b1ock!')
>>>
Loop 0
Loop 1
for x in []:
print('Never runs')
else:
print('For Else block!')
>>>
For Else block!
while False:
print('Never runs')
else:
print('While Else block!')
>>>
While Else block!
a = 4
b = 9
for i in range(2, min(a, b) + 1):
print('Testing',i)
if a % i == 0 and b % i == 0:
print('Not coprime')
break
else:
print('Coprime')
>>>
Testing 2
Testing 3
Testing 4
Coprime
def coprime(a, b):
for i in range(2, min(a, b) + 1):
if a % i == 0 and b % i == 0:
return False
return True
assert coprime(4, 9)
assert not coprime(3, 6)
def coprime_alternate(a, b):
is_coprime = True
for i in range(2, min(a, b) + 1):
if a % i == 0 and b % i == 0:
is_coprime = False
break
return is_coprime
assert coprime_alternate(4, 9)
assert not coprime_alternate(3, 6)
Python有种特殊的语法,可以把else块紧跟在整个for循环或while循环的后面。 只有在整个循环没有因为break提前跳出的情况下,else块才会执行。 把else块紧跟在整个循环后面,会让人不太容易看出这段代码的意思,所以要避免这样写。
关于作者:布雷特·斯拉特金(Brett Slatkin),Google首席软件工程师,他是Google Surveys的联合技术创始人,也是PubSubHubbub协议的共同创造者之一。此外,Slatkin还发布了Google的第一个云计算产品——App Engine。早在15年前,Slatkin就开始在工作中使用Python管理Google大量的服务器群。他拥有纽约哥伦比亚大学计算机工程专业学士学位。
本文摘编自《Effective Python:编写高质量Python代码的90个有效方法》(原书第2版),经出版方授权发布。
延伸阅读《Effective Python》(原书第2版)
点击上图了解及购买
转载请联系微信:DoctorData
推荐语:Python编程进阶必读,基于Python3.8,新增31条建议!掌握Pythonic编程方式,写出高质量代码|进阶到编程高手的程序员修炼之道和代码整洁之道。
更多精彩👇