非常有趣的Python的用法彙總
使用python過程中經常會不經意間遇到非常有趣的用法,於是特意蒐集了一些
有趣的用法
1.for-else用法
迴圈正常結束則執行else語句。一般用於迴圈找符合條件的元素,如果找到則
break
調出迴圈,不會觸發
else
;如果沒有找到(完整執行迴圈)則
print not found
《Effictive Python》一書中對for-else用法提出了質疑,主要觀點是可以通過封裝成函式來取代這一用法,而封裝成函式是更加通用易懂的做法,所以一般不會使用for-else用法。
2.try-else用法
如果沒有觸發異常就執行
else
3.解包用法
類似這樣
a,b,c = ['a', 'b', 'c']
4.單行if-else
a = 1 b = 3 if a == 1 else 2 print('it is one' if a == 1 else 'no')
5.迭代器傳入函式中不用加括號
# 一般是這樣 a = (i for i in range(10)) sum(a) # 我們可以這樣 sum((i for i in range(10))) # 但我們還可以這樣 sum(i for i in range(10)) # 類似的有 ' '.join(str(i) for i in range(10))
7.or的用法
python中
x or y
表示如果x為真就是x的值,否則為y的值
我們會經常看到類似這樣的用法(比如函式的一個
value
引數沒有設定預設值,這樣使用就允許它不賦值)
value = value or {} # 相當於 value = value if value else {}
8.and的用法
python中
x and y
表示如果x是假,結果就是x的值,否則就是y的值
x and y and z
多個and連線時,如果全是真結果就是最後一個的值;如果中間有假的值,結果就是第一個假的值
舉一個例子
def not_empty(a): return a and a.strip() not_empty(' a ') # 值為 'a' not_empty(None) # 不會報錯(如果 return a.strip() 就會報錯) # 在處理None的問題上相當於 def not_empty(a): if a is None: return None else: return a.strip()
細細品味and和or的差別,他們邏輯類似,但是實現的功能是不可以相互替代的
- or 是結果如果不滿意有個善後工作
- and是要做一件事之前先檢驗一下,不能做就不讓它做
9.if value:
# 要用 if value: # 不要用 if value == True:
這裡總結一下這種情況下什麼時候是
True
,什麼時候是
False
False:
0 0.0 '' [] {} () set() None False
True:
-
' ' 'anything' [''] [0] (None, )
- 沒有內容的可迭代物件
另外要注意一點,我們用
if
判斷一個物件是不是
None
的時候,要
if a is None
而不要直接
if a
,因為如果是後者,有非常多不是
None
的情況也會判定為
False
,比如空字串、空列表等,為了精確指定
None
還是要用前者,這也是一種規範。
10.下劃線的特殊使用
python中下劃線是一種特殊的變數和符號,有一些特殊的用途
11.文件字串
python有一種獨一無二的註釋方式,在包、模組、函式、類中第一句,使用
'''doc'''
這樣三引號註釋,就可以在物件中用
__doc__
的方式提取
比較規範的寫法是這樣的(這裡參考
grequests
模組的寫法)
def myfun(a, b): '''add two numbers :param a: one number :param b: another number :returns: a number ''' print(a + b) print(myfun.__doc__) # 結果為 add two numbers :param a: one number :param b: another number :returns: a number
其實引數還有其他的寫法,如
numpy
庫的寫法,可以看
這裡
除此之外,函式註釋還有另一種方式,函式名可以直接呼叫某個引數的註釋
有用的函式
1.sum的本質
本質:
sum(iterable, start=0)
將可迭代物件使用
+
連線
所以
sum([[1,2],[3,4]], [])
返回結果為
[1, 2, 3, 4]
2.range(start, stop[, step])
可以直接用
for i in range(10, 0, -1)
降序迴圈
3.enumerate迴圈索引
for index, item in enumerate(['a', 'b', 'c']): print(index, item) 輸出: 0 a 1 b 2 c
4.管道操作
func1(func2(func3(a)))寫成類似a %>% func3 %>% func2 %>% func1,清晰展示函式執行的順序,增強可讀性
python本身不帶有這樣的用法,只是一些庫提供了這樣的用法,比如pandas和syntax_sugar
其他
另外,就是一些基礎的
- 列表推導式
- 裝飾器
- 生成器
-
map reduce filter
- 鏈式比較
- 類的魔術方法
閱讀優秀的程式碼也是提高程式設計水平的好方法
大家在學python的時候肯定會遇到很多難題,以及對於新技術的追求,這裡推薦一下我們的Python學習扣qun:784758214,這裡是python學習者聚集地!!同時,自己是一名高階python開發工程師,從基礎的python指令碼到web開發、爬蟲、django、資料探勘等,零基礎到專案實戰的資料都有整理。送給每一位python的小夥伴!每日分享一些學習的方法。和需要注意的小細節
點選: python技術分享交流
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913713/viewspace-2650586/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python的各類運算子及用法彙總!Python
- 反向代理的有趣用法
- Oracle中的臨時表用法彙總Oracle
- 10個非常有趣的 Linux 彩蛋Linux
- C#中DllImport用法彙總C#Import
- 10個非常有趣的Linux命令【轉載】Linux
- 10個用Java謀生非常有趣的方式Java
- JSON簡介以及用法彙總JSON
- Java隨機數的幾種有趣用法Java隨機
- Python類彙總Python
- 一次非常有趣的 SQL 優化經歷SQL優化
- 一次非常有趣的sql優化經歷SQL優化
- DataGridView常見用法和FAQ彙總View
- python中的路徑問題彙總Python
- 4款常用的Python GUI庫彙總!PythonGUI
- Python有趣的小案例Python
- PHP面試經常被問到的知識點彙總,對你非常有用PHP面試
- Python numpy中矩陣的用法總結Python矩陣
- 16個非常有趣的HTML5 Canvas動畫特效集合HTMLCanvas動畫特效
- 有趣的linux命令總結Linux
- JSON簡介以及用法程式碼彙總JSON
- python實踐中的錯誤 彙總篇Python
- 幾個常見函式的非常見用法函式
- Android Studio軟體的快捷鍵用法彙總及常用配置Android
- 那些有趣/用的 Python 庫Python
- 那些有趣/有用的 Python 庫Python
- 總結十個Python 字典用法的使用技巧Python
- Python常用的組合資料型別彙總Python資料型別
- 超實用的 Python 學習資源彙總Python
- 有趣的Python:Python控制鍵盤滑鼠Python
- GitHub上有趣的python資料GithubPython
- type的用法總結
- sqlldr的用法總結SQL
- Java Stream常見用法彙總,開發效率大幅提升Java
- 前人總結出的一些學Python中的陷阱和技巧,非常受用!Python
- Python初學者的29個知識難點彙總Python
- Python常見web框架彙總PythonWeb框架
- Python 庫這非常的實用Python