欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

分享6個(gè)隱藏的python功能

系統(tǒng) 1628 0

小編在以前給大家介紹過python一些很少用到的功能,這次我們給大家分享了6個(gè)隱藏的python功能,學(xué)習(xí)下。

在python的設(shè)計(jì)哲學(xué)中,有這么一條內(nèi)容:“Simple is better than complex”,簡單的代碼比復(fù)雜的要好,這也是為什么python被推薦為初學(xué)者必學(xué)的語言。很多人初學(xué)python,往往會(huì)受到其他語言的影響,比如之前學(xué)過java的,把python代碼寫的像java一樣。舉個(gè)例子,在java中設(shè)計(jì)一個(gè)類時(shí),我們常常會(huì)為內(nèi)部變量定義get和set方法,這是保證封裝性的重要手段,但是在python中卻不建議這樣做,python中的內(nèi)部變量使用單下劃線表示(比如self.__name),不過這樣定義了還是可以訪問到私有變量。怎么說?python中使用約定,我不會(huì)強(qiáng)制說這個(gè)變量你不能訪問,但是你最好不要這樣做。如果需要對(duì)變量進(jìn)行其他操作,使用@parameter裝飾器進(jìn)行g(shù)et和set封裝,這樣直接訪問內(nèi)部變量會(huì)出錯(cuò)。講偏了,關(guān)于類和對(duì)象這方面的內(nèi)容以后再說。

你如果打開python交互環(huán)境,輸入import this可以看到以下內(nèi)容:

            
The Zen of Python, by Tim Peters
Beautiful is better than ugly. 優(yōu)美勝于丑陋
Explicit is better than implicit. 明了勝于晦澀
Simple is better than complex. 簡單勝過復(fù)雜
Complex is better than complicated. 復(fù)雜勝過凌亂
Flat is better than nested.  扁平勝于嵌套
Sparse is better than dense.  間隔勝于緊湊
          

這些是python的設(shè)計(jì)哲學(xué),后面還有一些沒列出來,在寫python代碼時(shí)最好遵從這些設(shè)計(jì)哲學(xué)。

第一個(gè)功能。

如果讓你寫一段代碼表示a大于2且小于10,大多數(shù)人都會(huì)用a > 2 && a < 10對(duì)吧,在python中你可以直接使用2 < a < 10。

            
a = 5
# 可以這樣
print(2 < a < 10)
# 也可以這樣
print(10 > a <= 9)
          
            
True
True
          

還有一個(gè)很多人可能都知道的技巧,就地交換值,而不需要中間變量。

            
a = 2
b = 3
print(a, b)
# 直接交換
a, b = b, a
print(a, b)
          
            
2 3
3 2
          

第二個(gè)功能。

我們常常會(huì)需要用for循環(huán)來遍歷序列中的值,然后進(jìn)行某些操作。在其他語言中你可能這么寫:

            
a = ['a', 'b', 'c', 'd', 'e']
for(int i = 0; i < len(a); i++):
print(a[i])
          

在python中很多人會(huì)這么寫,對(duì)a的長度使用range生成一個(gè)序列,然后遍歷。

            
a = ['a', 'b', 'c', 'd', 'e']
# 對(duì)a的長度使用range生成一個(gè)序列,然后遍歷
for i in range(len(a)):
print(a[i])
          
            
a
b
c
d
e
          

其實(shí)你可以這樣寫,直接使用enumerate方法,它會(huì)返回序列的下標(biāo)和值。

            
a = ['a', 'b', 'c', 'd', 'e']
# 對(duì)a的長度使用range生成一個(gè)序列,然后遍歷
for i in enumerate(a):
print(i)
# 或者這樣
for index, value in enumerate(a):
print(index, value)
          
            
(0, 'a')
(1, 'b')
(2, 'c')
(3, 'd')
(4, 'e')
0 a
1 b
2 c
3 d
4 e
          

第三個(gè)功能。

一般情況下,循環(huán)語句和條件判斷語句是互不相干的,if后面就是else,for之后是in。其實(shí)循環(huán)語句后面也可以跟著else。for之后跟著else的意思是,運(yùn)行這個(gè)循環(huán),然后執(zhí)行else中的語句。

            
for i in foo:
  if i == 0:
    break
else:
  print("i was never 0")
          

除了for循環(huán)后面可以跟著else,while和try/except之后也可以跟著else。

第四個(gè)功能。

用過字典的都知道,如果我們需要字典中某個(gè)鍵的值,可以使用d['key']來獲取,如果key不存在的話會(huì)拋出異常,這樣肯定不好了,如果使用d.get('key'),在key值不存在時(shí)會(huì)默認(rèn)返回None,這樣就不用關(guān)心是否會(huì)有異常發(fā)生。其實(shí)還可以這樣,d.get('key', 0),第二個(gè)參數(shù)指定key不存在時(shí)用來代替的值。

第五個(gè)功能。

正則表達(dá)式是個(gè)很讓人頭疼的東西,如果能加上注釋該多好,這樣我就知道自己寫的是什么了。在Python中你可以這樣。

            
# 對(duì)每一個(gè)規(guī)則使用引號(hào)括起來
pattern = (
 "^"         # beginning of string
"M{0,4}"      # thousands - 0 to 4 M's
"(CM|CD|D?C{0,3})" # hundreds - 900 (CM), 400 (CD), 0-300 (0 to 3 C's),
          #      or 500-800 (D, followed by 0 to 3 C's)
"(XC|XL|L?X{0,3})" # tens - 90 (XC), 40 (XL), 0-30 (0 to 3 X's),
          #    or 50-80 (L, followed by 0 to 3 X's)
"(IX|IV|V?I{0,3})" # ones - 9 (IX), 4 (IV), 0-3 (0 to 3 I's),
          #    or 5-8 (V, followed by 0 to 3 I's)
"$"         # end of string
 )
print(pattern)
# 然后bapattern放入對(duì)應(yīng)的re匹配方法中。
          
            
^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$
          

第六個(gè)功能。

在上一篇迭代器和生成器中說過,iter()函數(shù)可以生成一個(gè)迭代器,之后你就能使用循環(huán)或者next方法來產(chǎn)出值。其實(shí)iter還接受第二個(gè)參數(shù),它的作用是在迭代的過程中如果碰到第二個(gè)參數(shù)則停止。看個(gè)例子:

            
def seek_next_line(f):
for c in iter(lambda: f.read(1),'\n'):
pass
          

上面的代碼中,從f中循環(huán)讀入,如果碰到\n則結(jié)束讀取。

其他的技巧像使用生成器表達(dá)式,利用拆包方法等等,之前都有說過,這里不再贅述。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 日本无码成人片在线观看波多 | 欧美视频在线第一页 | 综合二区| 青草视频在线观看免费资源 | 超碰综合 | 亚洲国内精品 | 91视频综合网 | 亚洲九九香蕉 | 男女午夜视频 | 日韩一区二区三区视频 | 201天天爱天天做 | 午夜a狂野欧美一区二区 | dy天堂 | 色xx综合网 | 91精品一区二区三区久久久久久 | 91免费观看 | 成人精品视频一区二区三区 | 午夜欧美性欧美 | 91在线视频播放 | 国产自啪啪 | 久久综合丝袜长腿丝袜 | 免费看的久久久久 | 精品国产三级在线观看 | 午夜影视在线观看免费完整高清大全 | 国产高清久久久 | 91短视频免费在线观看 | 成人午夜视频在线播放 | 国产在线观看中文字幕 | 色婷婷久久免费网站 | 精品欧美一区二区久久久伦 | 久久一区二区三区四区 | 无名者电影在线完整版免费 | 日韩亚洲视频 | 性夜影院爽黄a爽在线看香蕉 | 日本成人在线看 | 一国产一级淫片a免费播放口 | 99精品欧美一区 | 国产视频日韩 | 伊人久久国产精品 | 欧美国产精品一区二区 | 夜夜操网 |