天天看點

《Python程式設計從0到1》筆記2——表達式竟然也有副作用

在表達式的求值過程中,對狀态的改變稱為表達式的副作用。Python中内建的各種運算符(此處是狹義的含義,如加減乘除比較等運算符,并不包含使用者自定義的運算符或函數)是沒有副作用的,但各種函數調用時常帶有副作用(比如各種輸入輸出函數)。在使用帶有副作用的表達式建構複雜表達式時要格外留意,因為這可能帶來程式員容易忽視的行為。如:

if expA and expB :
    ...           

   這條語句用來測試表達式A B都為真的條件。expA and expB的計算具有短路性質,即如果A為假則整個表達式已然能夠判斷為假,表達式B不會被求值。如果表達式B包含函數調用,則意味着該函數不一定被調用。

   不過總體說來,Python中副作用帶來的麻煩并不多。程式員隻要不在複雜表達式中嵌套帶有副作用的函數即可避免這些容易混淆的情形。這種編碼風格也能很容易遵守。[1]

[1] C程式員往往需要利用各種副作用(比如自增、指派)寫出簡潔緊湊的程式,但在Python中,由于文法本身已經提供足夠的簡潔性,這門語言被刻意設計成避免這些寫法。

這是一本很有趣很有趣的Python入門書,牆裂推薦。

《Python程式設計從0到1》筆記2——表達式竟然也有副作用