Re: [問題] 關於python函式的問題

作者: 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 優美的解法
作者: venusmen (金星人)   2016-08-17 20:58:00
兩者就是差在一個break會再重新跑一次迴圈,另外一個就是直接進行到下一個階段else嗎

Links booklink

Contact Us: admin [ a t ] ucptt.com