→ 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 優美的解法
--
"問おう、貴方が私のマスターか?"
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.161.94.175
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1502977715.A.B91.html
※ 編輯: uranusjr (218.161.94.175), 08/17/2017 21:49:05
推 venusmen: 了解! 真的長知識了 感謝!! 08/18 17:01