我发现了我将要继续采用海象运算符的三个方面,且每个方面除了能省一行代码之外都还能带来其他好处。
While 循环
虽然循环似乎是最常见的使用海象运算符的情况。 在此处使用海象运算符的好处是可以在while语句中合并表达式和修饰符。 我已经写过无数次无限循环了,因为我总是忘记在循环末尾写修改语句。
line = f.readLine()
while line:
print(line)
line = f.readLine()
# 转换为海象运算符时
while line := f.readLine():
print(line)
不过要注意, 使用海象运算符更适合用于传统的do/while 循环,因为赋值在循环表达式之前。 请参见下面的差异:
n = 0
while n < 3:
print(n) # 0,1,2
n += 1
# 当转换为海象运算符时
w = 0
while (w := w + 1) < 3:
print(w) # 1,2
根据我有限的经验,我发现它在替换无限while循环中最有用:
while True:
p = input("Enter the password: ")
if p == "the password":
break
# 当转换为海象运算符时
while (p := input("Enter the password: ")) != "the password":
continue
能够将while循环转换为一个语句实在太棒啦。
列表理解
我发现海象运算符对优化某些列表理解语句很有帮助。 有两个标准1)需要过滤数据,2)存储taxing function的结果。让我们看一下传统的列表理解语句:
scores = [22,54,75,89]
valid_scores = [
longFunction(n)
for n in scores
if longFunction(n)
]
注意条件语句longFunction(n)了吗? 注意longFunction()被调用了两次吗? 这是海象运算符的候选。
scores = [22,54,75,89]
valid_scores = [
result for n in scores
result := longFunction(n)
]
在优化了的代码中,longFunction()仅被调用一次,隐含的降低了调用次数。
处理返回的数据
接下来是我认为海象运算符的最有用的实现。 我经常使用称为iFormBuilder的移动数据收集软件。 具体来说,请求记录(数据行)后,查询返回数据时,需要对其进行处理。 这是我每天编写的代码块:
最后
🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!