作為一門優秀的指令碼語言,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是函式控制代碼,如果帶 則呼叫,這裡只返...