Python語法糖介紹

2021-10-18 04:14:00 字數 2972 閱讀 8708

作為一門優秀的指令碼語言,python在語法層面提供了很多好玩又實用的語法,俗稱語法糖,正確的使用這些技巧能讓**看起來更優雅,更pythonic,這裡列舉幾個。

#!/usr/bin/env python3

defmain()

: animals =

['cat'

,'dog'

,'bird'

,'pig']if

"dog"

in animals:

print

("dog在列表裡"

)else

:print

("dog不在列表裡"

)if __name__ ==

'__main__'

: main(

)

以上**明顯**行數比較多,可以簡化為如下寫法

#!/usr/bin/env python3

defmain()

: animals =

['cat'

,'dog'

,'bird'

,'pig'

]print

("dog在列表裡")if

"dog"

in animals else

print

("dog不在列表裡"

)if __name__ ==

'__main__'

: main(

)

先看一段**:

#!/usr/bin/env python3

defmain()

: flag =

false

animals =

['cat'

,'dog'

,'bird'

,'pig'

]for o in animals:

if o ==

"dog"

: flag =

true

break

if flag ==

true

:print

("dog在列表裡"

)if __name__ ==

'__main__'

: main(

)

**很簡單,需要使用for迴圈執行一段邏輯,如果命中某個條件,則使用乙個變數flag做下標記,並且終止for迴圈,迴圈結束之後,判斷flag是否等於true來執行另一段邏輯。這種場景,借助了乙個額外的變數,比較囉嗦,在python裡有個更優雅的寫法。

#!/usr/bin/env python3

defmain()

: animals =

['cat'

,'dog'

,'bird'

,'pig'

]for o in animals:

if o ==

"dog"

:break

else

:print

("dog不在列表裡"

)if __name__ ==

'__main__'

: main(

)

這段**的意思就是,for迴圈執行過程中,如果遇到了break語句,則退出for迴圈之後,就不再不執行else部分的**。

開啟檔案,遍歷檔案,然後再關閉檔案控制代碼,我們一般會這麼寫

#!/usr/bin/env python3

defmain()

: f =

open

("a.txt"

)try

:for line in f:

print

(line)

finally

: f.close(

)if __name__ '__main__'

: main(

)

上述寫法需要自己去呼叫close方法,保證控制代碼被正常釋放。

使用python中的with方法,就不用顯示的去呼叫close了,並且即使中間出現異常,也可以。

#!/usr/bin/env python3

defmain()

:with

open

("a.txt"

)as f:

for line in f:

print

(line)

if __name__ '__main__'

: main(

)

注意:實際上with方法並不是幫你呼叫了close方法,而是呼叫了with返回物件的__exit__()方法。

如果乙個類實現了close()方法,就可以借助with和contextlib.closing()幫你自動呼叫close函式。

#!/usr/bin/env python3

import contextlib

class

request

(object):

def__init__

(self)

:pass

defdo

(self)

:print

("do something"

)def

close

(self)

:print

("close"

)def

main()

:with contextlib.closing(request())

as r:

r.do(

)if __name__ ==

'__main__'

: main(

)

不定期更新中…

python 語法糖太多 python 語法糖

匿名函式 lamda表示式 def add x,y return x y 等價於f lamda x,y x y f 1,2 三元表示式 wefx 1 y 2 c x if x map對映關係 def square x return x x list x 1,3,10 list r map squar...

Python 的 with 語法糖

python 內建了 sqlite3 模組,可以方便地呼叫 sqlite 資料庫。import sqlite3 conn sqlite3.connect test.db cur conn.cursor cur.execute create table students id bigint prima...

Python中語法糖及帶參語法糖

在python中,符號常被稱作語法糖 裝飾器 在某函式定義時,用以包裝該函式,以達到擷取,控制該函式的目的。def d f print d.k f 此處保留了傳進來的原函式 f def f x return k x 2 return f 此處不能寫成f x f是函式控制代碼,如果帶 則呼叫,這裡只返...