最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2017年12月07日 17:17:09   投稿:laozhang  
給大家詳細(xì)分析了6個(gè)隱藏的python功能,并詳細(xì)講解了每個(gè)功能用法,需要的朋友學(xué)習(xí)下吧。

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

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

你如果打開(kā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. 簡(jiǎn)單勝過(guò)復(fù)雜
Complex is better than complicated. 復(fù)雜勝過(guò)凌亂
Flat is better than nested.  扁平勝于嵌套
Sparse is better than dense.  間隔勝于緊湊

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

第一個(gè)功能。

如果讓你寫(xiě)一段代碼表示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)來(lái)遍歷序列中的值,然后進(jìn)行某些操作。在其他語(yǔ)言中你可能這么寫(xiě):

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

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

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

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

a = ['a', 'b', 'c', 'd', 'e']
# 對(duì)a的長(zhǎng)度使用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)語(yǔ)句和條件判斷語(yǔ)句是互不相干的,if后面就是else,for之后是in。其實(shí)循環(huán)語(yǔ)句后面也可以跟著else。for之后跟著else的意思是,運(yùn)行這個(gè)循環(huán),然后執(zhí)行else中的語(yǔ)句。

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

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

第四個(gè)功能。

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

第五個(gè)功能。

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

# 對(duì)每一個(gè)規(guī)則使用引號(hào)括起來(lái)
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è)功能。

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

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

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

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

相關(guān)文章

  • python聚類算法選擇方法實(shí)例

    python聚類算法選擇方法實(shí)例

    在本篇文章里小編給大家整理的是一篇關(guān)于python聚類算法選擇方法實(shí)例,有需要的朋友們可以學(xué)習(xí)參考下。
    2021-07-07
  • 詳解Python?matplotlib中的色彩使用詳解

    詳解Python?matplotlib中的色彩使用詳解

    matplotlib中提供了一些常見(jiàn)顏色的字符串,并封裝成了幾個(gè)顏色字典,這篇文章主要來(lái)和大家講解一下matplotlib中的色彩使用,需要的可以參考一下
    2023-07-07
  • Python高級(jí)特性與幾種函數(shù)的講解

    Python高級(jí)特性與幾種函數(shù)的講解

    今天小編就為大家分享一篇關(guān)于Python高級(jí)特性與幾種函數(shù)的講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • Python 多繼承中的一個(gè)詭異現(xiàn)象 既是 Father又是grandfather

    Python 多繼承中的一個(gè)詭異現(xiàn)象 既是 Father又是grandfather

    我們知道,在面向?qū)ο缶幊汤锩妫^承是一個(gè)很重要的概念。子類可以使用父類的方法和屬性,接下來(lái)小編將用舉例的方式為大家講解Python 多繼承中的一個(gè)詭異現(xiàn)象 其即是爸爸又是爺爺?shù)钠孑猬F(xiàn)象,感興趣的小伙伴可以看下面文章具體了解
    2021-09-09
  • python+opencv實(shí)現(xiàn)文字顏色識(shí)別與標(biāo)定功能

    python+opencv實(shí)現(xiàn)文字顏色識(shí)別與標(biāo)定功能

    最近小編接了一個(gè)比較簡(jiǎn)單的圖像處理的單子,今天小編給大家分享python+opencv實(shí)現(xiàn)文字顏色識(shí)別與標(biāo)定功能的完整思路及代碼,感興趣的朋友一起看看吧
    2021-09-09
  • python MySQLdb Windows下安裝教程及問(wèn)題解決方法

    python MySQLdb Windows下安裝教程及問(wèn)題解決方法

    這篇文章主要介紹了python MySQLdb Windows下安裝教程及問(wèn)題解決方法,本文講解了安裝數(shù)據(jù)庫(kù)mysql、安裝MySQLdb等步驟,需要的朋友可以參考下
    2015-05-05
  • PyQt通過(guò)動(dòng)畫(huà)實(shí)現(xiàn)平滑滾動(dòng)的QScrollArea

    PyQt通過(guò)動(dòng)畫(huà)實(shí)現(xiàn)平滑滾動(dòng)的QScrollArea

    這篇文章主要為大家詳細(xì)介紹了PyQt如何使用Qt的動(dòng)畫(huà)框架 QPropertyAnimation來(lái)實(shí)現(xiàn)平滑滾動(dòng)的QScrollArea,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的可以學(xué)習(xí)一下
    2023-01-01
  • 使用Python腳本操作MongoDB的教程

    使用Python腳本操作MongoDB的教程

    這篇文章主要介紹了使用Python腳本操作MongoDB的教程,MongoDB作為非關(guān)系型數(shù)據(jù)庫(kù)得到了很大的宣傳力度,而市面上的教程一般都是講解JavaScript的腳本操作,本文則是基于Python,需要的朋友可以參考下
    2015-04-04
  • java字符串格式化輸出實(shí)例講解

    java字符串格式化輸出實(shí)例講解

    在本篇文章里小編給大家整理的是一篇關(guān)于java字符串格式化輸出實(shí)例講解,有需要的朋友們可以學(xué)習(xí)下。
    2021-01-01
  • 12步教你理解Python裝飾器

    12步教你理解Python裝飾器

    或許你已經(jīng)用過(guò)裝飾器,它的使用方式非常簡(jiǎn)單但理解起來(lái)困難(其實(shí)真正理解的也很簡(jiǎn)單),想要理解裝飾器,你需要懂點(diǎn)函數(shù)式編程的概念,python函數(shù)的定義以及函數(shù)調(diào)用的語(yǔ)法規(guī)則等,感興趣的小伙伴們可以參考一下
    2016-02-02

最新評(píng)論

长武县| 泊头市| 温州市| 洛阳市| 三穗县| 威远县| 忻州市| 苏尼特右旗| 仁怀市| 马边| 巢湖市| 濮阳市| 尉氏县| 玉林市| 新建县| 武义县| 北海市| 古蔺县| 南部县| 丹棱县| 罗江县| 云和县| 馆陶县| 巴南区| 岳阳县| 晋城| 中阳县| 兰州市| 海南省| 海安县| 禄劝| 柳江县| 瓦房店市| 油尖旺区| 安陆市| 沁源县| 和平县| 大港区| 古蔺县| 东城区| 新建县|