欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

分享6個隱藏的python功能

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

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

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

第一個功能。

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

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

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

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

第二個功能。

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

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

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

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

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

a = ['a', 'b', 'c', 'd', 'e']
# 對a的長度使用range生成一個序列,然后遍歷
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

第三個功能。

一般情況下,循環(huán)語句和條件判斷語句是互不相干的,if后面就是else,for之后是in。其實循環(huán)語句后面也可以跟著else。for之后跟著else的意思是,運(yùn)行這個循環(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。

第四個功能。

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

第五個功能。

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

# 對每一個規(guī)則使用引號括起來
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放入對應(yīng)的re匹配方法中。
^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$

第六個功能。

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

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

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

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

相關(guān)文章

  • PyQt5通過信號實現(xiàn)MVC的示例

    PyQt5通過信號實現(xiàn)MVC的示例

    這篇文章主要介紹了PyQt5通過信號實現(xiàn)MVC的示例,幫助大家更好的理解和使用pyqt5,感興趣的朋友可以了解下
    2021-02-02
  • 解決已經(jīng)安裝requests,卻依然提示No module named requests問題

    解決已經(jīng)安裝requests,卻依然提示No module named requests問題

    今天小編就為大家分享一篇解決已經(jīng)安裝requests,卻依然提示No module named 'requests'問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • np.hstack()和np.dstack()的使用

    np.hstack()和np.dstack()的使用

    本文主要介紹了np.hstack()和np.dstack()的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • python在windows調(diào)用svn-pysvn的實現(xiàn)

    python在windows調(diào)用svn-pysvn的實現(xiàn)

    本文主要介紹了python在windows調(diào)用svn-pysvn的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Django的信號機(jī)制詳解

    Django的信號機(jī)制詳解

    Django中提供了“信號調(diào)度”,用于在框架執(zhí)行操作時解耦。通俗來講,就是一些動作發(fā)生的時候,信號允許特定的發(fā)送者去提醒一些接受者。
    2017-05-05
  • python開發(fā)實時可視化儀表盤的示例

    python開發(fā)實時可視化儀表盤的示例

    這篇文章主要介紹了python開發(fā)實時可視化儀表盤的示例,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-05-05
  • 微信跳一跳游戲python腳本

    微信跳一跳游戲python腳本

    這篇文章主要為大家詳細(xì)介紹了微信跳一跳游戲python腳本,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • pydoc?生成Python代碼文檔實例

    pydoc?生成Python代碼文檔實例

    pydoc?是一個強(qiáng)大且易于使用的工具,用于生成Python代碼的文檔,通過解析代碼中的文檔字符串,?pydoc?能夠自動生成清晰、易讀的文檔,并提供一個用戶友好的界面來查看和瀏覽文檔,本文提供了一個簡單的示例
    2024-01-01
  • 如何在Python項目中做多環(huán)境配置(環(huán)境變量使用.env文件)

    如何在Python項目中做多環(huán)境配置(環(huán)境變量使用.env文件)

    實際工程開發(fā)中常常會對開發(fā)、測試和生產(chǎn)等不同環(huán)境配置不同的數(shù)據(jù)庫環(huán)境,傳統(tǒng)方式可以通過添加不同環(huán)境的配置文件達(dá)到部署時的動態(tài)切換的效果,這篇文章主要給大家介紹了關(guān)于如何在Python項目中做多環(huán)境配置的相關(guān)資料,環(huán)境變量使用.env文件,需要的朋友可以參考下
    2024-06-06
  • python文件排序的方法總結(jié)

    python文件排序的方法總結(jié)

    在本篇內(nèi)容里小編給各位整理的是一篇關(guān)于python文件排序的方法總結(jié),有需要的朋友們可以參考下。
    2020-09-09

最新評論