python中content的用法_学python吗,教你5个python现学现用的有趣用法
在我們使用python的過程中也會遇到一些有意思的用法,這里找到了一些總結有趣的
話不多說,接著看下去吧!!!!python高薪就業(視頻、學習路線、免費獲取)?shimo.im
for-else用法
循環正常結束則執行else語句。一般用于循環找符合條件的元素.
如果找到則 break 調出循環,不會觸發 else ;
如果沒有找到(完整運行循環)
則 print not found《Effictive Python》
一書中對for-else用法提出了質疑,
主要觀點是可以通過封裝成函數來取代這一用法,
而封裝成函數是更加通用易懂的做法,所以一般不會使用for-else用法.
try-else用法
如果沒有觸發異常就執行 else
參考
解包用法.
類似這樣 a,b,c = ['a', 'b', 'c']
python有趣的解包用.
單行if-else
a = 1b = 3 if a == 1 else 2print('it is one' if a == 1 else 'no')
迭代器傳入函數中不用加括號
# 一般是這樣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))
or的用法
python中 x or y 表示如果x為真就是x的值,否則為y的值。
我們會經常看到類似這樣的用法
(比如函數的一個 value 參數沒有設置默認值,這樣使用就允許它不賦值)
value = value or {}
# 相當于value = value if value else
{}
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是要做一件事之前先檢驗一下,不能做就不讓它做.
if value:
# 要用if value:# 不要用if value == True:
這里總結一下這種情況下什么時候是 True ,什么時候是 .
FalseFalse: 0 0.0 '' []
{}
()
set() None False
True:
' ' 'anything' [''] [0] (None, )
沒有內容的可迭代對象.
另外要注意一點,我們用 if 判斷一個對象是不是 None 的時候.
要 if a is None 而不要直接 if a .
因為如果是后者,有非常多不是 None 的情況也會判定為 False .
比如空字符串、空列表等,為了精確指定 None 還是要用前者,這也是一種規范。
下劃線的特殊使用
python中下劃線是一種特殊的變量和符號,有一些特殊的用途.
文檔字符串
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
其實參數還有其他的寫法.
除此之外,函數注釋還有另一種方式,函數名可以直接調用某個參數的注釋,
詳見 Python 的函數注釋 .
有用的函數
sum的本質
本質:
sum(iterable, start=0) 將可迭代對象使用 + 連接 所以 sum([[1,2],[3,4]], [])
返回結果為 [1, 2, 3, 4]
range(start, stop[, step])
可以直接用 for i in range(10, 0, -1) 降序循環
enumerate循環索引.
for index, item in enumerate(['a', 'b', 'c']):
print(index, item)
輸出:a
b
c
管道操作
func1(func2(func3(a)))寫成類似a %>% func3 %>% func2 %>% func1.
清晰展示函數執行的順序,增強可讀性.
python本身不帶有這樣的用法,只是一些庫提供了這樣的用法.比如pandas和 syntax_sugar
其他
另外,就是一些基礎的列表推導式
裝飾器
生成器
map reduce filter
鏈式比較
類的魔術方法
更新補充
for-else的更多討論
下面引用《Effictive Python》一書中內容:
a = 4 b = 9
for i in range(2, min(a, b) + 1):
print(‘Testing’, i)
if a % i == 0 and b % i == 0:
print(‘Not coprime’)
break
else:
print(‘Coprime’)
隨后作者寫到:
實際上,您不會以這種方式編寫代碼。
相反,您需要編寫一個助手函數來進行計算。
這樣的助手函數是用兩種常見的樣式編寫的。
第一種方法是在找到所要尋找的條件時盡早返回。
如果您通過循環,則返回默認結果。
def coprime(a, b):
for i in range(2, min(a, b) + 1):
if a % i == 0 and b % i == 0:
return False
return True
第二種方法是有一個結果變量,該變量指示您是否在循環中找到了要查找的內容。
一旦你發現什么,你就會跳出圈套。
def coprime2(a, b):
is_coprime = True
for i in range(2, min(a, b) + 1):
if a % i == 0 and b % i == 0:
is_coprime = False
break
return is_coprime
結尾
對于不熟悉代碼的讀者來說,這兩種方法都要清楚得多。
從Other塊中獲得的表現力并不比那些希望在將來理解您的代碼的人(包括您自己)所承受的負擔更重。
像循環這樣的簡單構造在Python中應該是不言自明的,您應該完全避免在循環之后使用其他塊。
總結起來就是for-else的優勢是可以被寫函數的方式替代的
讀者福利,點擊鏈接即可領取相關學習福利包:python高薪就業(視頻、學習路線、免費獲取)?shimo.im
是安全網站放心,繼續訪問就可以領取了
就業系列:
有方向有目標的學習才能節省時間,沒有方向目標的學習,就純粹浪費時間。
部分視頻展示:
電子書系列:
視頻容易理解,電子書作為輔助,有時候看視頻不方便可以用電子書作為輔助
python人工智能系列:.
總結
以上是生活随笔為你收集整理的python中content的用法_学python吗,教你5个python现学现用的有趣用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python mysql 保存csv_使
- 下一篇: 为什么代码正确却没有爬虫的信息_为什么敷