作者uranusjr (←这人是超级笨蛋)
看板Python
标题Re: [问题] 关於python函式的问题
时间Thu Aug 17 21:48:32 2017
1F:→ venusmen: 两者就是差在一个break会再重新跑一次回圈,另外一个 08/17 20:58
2F:→ venusmen: 就是直接进行到下一个阶段else吗08/17 20:58
※ 引述《venusmen (金星人)》之铭言:
: for n in my_dic:
: if n == name:
: print (name + "'s score is", my_dic[name])
: break
: else:
: print("班上没有这位同学喔")
上面这段等同於
found = False
for n in my_dic:
if n == name:
print('找到')
found = True
break
if not found:
print('没有')
这是一个...算是 Python 的特殊语法?
但是几乎所有的 best practice 都会叫你最好不要用
因为它的逻辑非常不直观, 也很不常见
而带来的效果也就是省你一个变数和两行程式, 不值得
所以结论就是知道有就好, 不需要会用
哪天看到别人用的时候知道意思即可
然後顺带一提, 以这个 function 的例子, 用 early return 会更清楚
def find_print_person(name):
for n in my_dic:
if n == name:
print('找到')
return
print('没有')
这也几乎在所有状况下都是比 for-else 优美的解法
--
"问おう、贵方が私のマスターか?"
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 218.161.94.175
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1502977715.A.B91.html
※ 编辑: uranusjr (218.161.94.175), 08/17/2017 21:49:05
3F:推 venusmen: 了解! 真的长知识了 感谢!! 08/18 17:01