some python trap and hints
開(kāi)篇幾個(gè)鏈接, 有很多的tips, 值得認(rèn)真學(xué)習(xí)
Python Tips, Tricks, and Hacks
http://www.siafoo.net/article/52
Programming FAQ
http://docs.python.org/faq/programming
下面是我整理的Python語(yǔ)言的幾個(gè)特殊之處(多和c#相比)
1. python的多行注釋
在很多語(yǔ)言中, /* */是多行注釋的寫法, 但在python中, 沒(méi)有專門的多行注釋寫法, 如果要寫多行注釋, 推薦的寫法是, 每行以#開(kāi)頭. 當(dāng)然, 也可以使用docstrings來(lái)做多行注釋, 但不推薦這個(gè)寫法.
2. python沒(méi)有枚舉類型
我覺(jué)得一般情況下可以使用dict來(lái)模擬一個(gè)枚舉, key為序號(hào), value為枚舉值.
3. python沒(méi)有switch語(yǔ)句
這個(gè)有點(diǎn)不太適應(yīng). 可以使用if 或者table的選擇驅(qū)動(dòng)來(lái)實(shí)現(xiàn), 不閑麻煩, 還有類的多態(tài)也可以用一用.
4. 布爾類型和邏輯運(yùn)算符
Python中用True和False來(lái)定義真假,None、任何數(shù)值類型中的0、空字符串''、空元組() 、空列表[]、空字典{}都被當(dāng)作False,其他對(duì)象都可被看做True.
Python用關(guān)鍵字and、or、not代替了C#語(yǔ)言中的邏輯運(yùn)算符&&、|| 和! ,此外 Pyhton中參與邏輯運(yùn)算的操作數(shù)不限于布爾類型,任何類型的值都可以參與邏輯運(yùn)算, and 和 or 所執(zhí)行的運(yùn)算結(jié)果并不一定是布爾值,確切地說(shuō), 而是返回最后參與計(jì)算的運(yùn)算子.(何為最后參與計(jì)算的運(yùn)算子呢? Python中的邏輯表達(dá)式是“短路”執(zhí)行的,也就是說(shuō)只有需要時(shí)才會(huì)進(jìn)行邏輯表達(dá)式右邊值的計(jì)算,例如表達(dá)式 a and b 只有當(dāng)a為True時(shí)才計(jì)算b。), 例如
'a' and 'b' 返回 'b'
'a' or 'b' 返回 'a'
5. 超強(qiáng)的布爾表達(dá)式, 居然可以怎么寫if (0 < i < 10)
def test(i):
if (0 < i < 10):
print("ok")
else:
print("")
6. i++, i-- 與++i, --i
python沒(méi)有i++和i--, 可以使用i+=1, i-=1.
但++i和--i是可以用的, 但也不用于c語(yǔ)言, 這里的+和-是取正和取負(fù)運(yùn)算符, ++i相當(dāng)于+(+i), 結(jié)果仍然是i, --i相當(dāng)于-(-i), 結(jié)果仍然是i
7. python的for語(yǔ)句
不同于C#的for語(yǔ)句, 更像foreach語(yǔ)句.
8. python的while語(yǔ)句
while語(yǔ)句也很特別, 還可以帶一個(gè)else字句
9. exception的拋出
這個(gè)和Object Pascal寫法完全的一致, raise Exception("some error.")
10. exception的捕獲
這個(gè)也和Object Pascal寫法類似, 和C#的try catch不太一樣, 另外不能直接使用err對(duì)象來(lái)輸出callback信息, 需要使用額外的traceback類完成. try exception 還可以加else子句, 如果沒(méi)有異常, else部分就會(huì)執(zhí)行, 個(gè)人覺(jué)得沒(méi)有必要, 僅僅的好處是, 代碼結(jié)構(gòu)顯得清晰一點(diǎn). (while 帶else, 我覺(jué)得存在意義比這個(gè)大一些)
1 #-----------------------
2 try:
3 i=int(s)
4 except Exception as err:
5 #except Exception,err: #這是老的寫法, 不推薦
6 print(err)
7 finally: # Clean up action
8 print("Goodbye!")
9 #-----------------------

浙公網(wǎng)安備 33010602011771號(hào)