楼主:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2017-08-17 21:48:32→ venusmen: 两者就是差在一个break会再重新跑一次循环,另外一个 08/17 20:58
→ 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 优美的解法