收藏,Python 開發(fā)中有哪些高級技巧盛险?

Python 開發(fā)中有哪些高級技巧瞄摊?這是知乎上一個問題,我總結(jié)了一些常見的技巧在這里苦掘,可能談不上多高級换帜,但掌握這些至少可以讓你的代碼看起來 Pythonic 一點。如果你還在按照類C語言的那套風(fēng)格來寫的話鹤啡,在 code review 恐怕會要被吐槽了惯驼。

本文閱讀時間5分鐘,收藏先

列表推導(dǎo)式

>>> chars = [ cforcin'python']

>>> chars

['p','y','t','h','o', 'n']

字典推導(dǎo)式

>>> dict1 = {'a':1,'b':2,'c':3,'d':4,'e':5}

>>> double_dict1 = {k:v*2for(k,v)indict1.items()}

>>> double_dict1

{'a':2,'b':4,'c':6,'d':8,'e':10}

集合推導(dǎo)式

>>> set1 = {1,2,3,4}

>>> double_set = {i*2foriinset1}

>>> double_set

{8,2,4,6}

合并字典

>>> x = {'a':1,'b':2}

>>> y = {'c':3,'d':4}

>>> z = {**x, **y}

>>> z

{'a':1,'b':2,'c':3,'d':4}

復(fù)制列表

>>> nums = [1,2,3]

>>> nums[::]

[1,2,3]

>>> copy_nums = nums[::]

>>> copy_nums

[1,2,3]

反轉(zhuǎn)列表

>>> reverse_nums = nums[::-1]

>>> reverse_nums

[3,2,1]

?PACKING / UNPACKING

變量交換

>>> a,b =1,2

>>> a ,b = b,a

>>> a

2

>>> b

1

高級拆包

>>> a, *b =1,2,3

>>> a

1

>>> b

[2,3]

或者

>>> a, *b, c =1,2,3,4,5

>>> a

1

>>> b

[2,3,4]

>>> c

5

函數(shù)返回多個值(其實是自動packing成元組)然后unpacking賦值給4個變量

>>>deff():

...return1,2,3,4

...

>>> a, b, c, d = f()

>>> a

1

>>> d

4

列表合并成字符串

>>>" ".join(["I","Love","Python"])

'I Love Python'

鏈?zhǔn)奖容^

>>>ifa >2anda <5:

...pass

...

>>>if2

...pass

yield from

# 沒有使用 field from

defdup(n):

? ?foriinrange(n):

? ? ? ?yieldi

? ? ? ?yieldi

# 使用yield from

defdup(n):

? ?foriinrange(n):

? ?yieldfrom[i, i]

foriindup(3):

print(i)

>>>

0

0

1

1

2

2

in 代替 or

>>>ifx ==1orx ==2orx ==3:

...pass

...

>>>ifxin(1,2,3):

...pass

字典代替多個if else

deffun(x):

? ?ifx =='a':

? ? ? ?return1

? ?elifx =='b':

? ? ? ?return2

? ?else:

? ? ? ?returnNone

deffun(x):

? ?return{"a":1,"b":2}.get(x)

有下標(biāo)索引的枚舉

>>>fori, einenumerate(["a","b","c"]):

... ?? ?print(i, e)

...

0a

1b

2c

生成器

注意區(qū)分列表推導(dǎo)式递瑰,生成器效率更高

>>> g = (i**2foriinrange(5))

>>> g

at0x10881e518>

>>>foriing:

... ?? ?print(i)

...

0

1

4

9

16

默認(rèn)字典 defaultdict

>>> d = dict()

>>> d['nums']

KeyError:'nums'

>>>

>>>fromcollectionsimportdefaultdict

>>> d = defaultdict(list)

>>> d["nums"]

[]

字符串格式化

>>> lang ='python'

>>> f'{lang} is most popular language in the world'

'python is most popular language in the world'

列表中出現(xiàn)次數(shù)最多的元素

>>> nums = [1,2,3,3]

>>> max(set(nums), key=nums.count)

3

或者

from collections import Counter

>>> Counter(nums).most_common()[0][0]

3

讀寫文件

>>>withopen("test.txt","w")asf:

... ?? ?f.writelines("hello")

判斷對象類型祟牲,可指定多個類型

>>> isinstance(a, (int, str))

True

類似的還有字符串的 startswith,endswith

>>>"http://foofish.net".startswith(('http','https'))

True

>>>"https://foofish.net".startswith(('http','https'))

True

__str__ 與 __repr__ 區(qū)別

>>> str(datetime.now())

'2018-11-20 00:31:54.839605'

>>> repr(datetime.now())

'datetime.datetime(2018, 11, 20, 0, 32, 0, 579521)'

前者對人友好泣矛,可讀性更強(qiáng)疲眷,后者對計算機(jī)友好,支持 obj == eval(repr(obj))

使用裝飾器

def makebold(f):

return lambda: "" + f() + ""

def makeitalic(f):

return lambda: "" + f() + ""

@makebold

@makeitalic

def say():

return "Hello"

>>> say()

Hello

不使用裝飾器您朽,可讀性非常差

def say():

return "Hello"

>>> makebold(makeitalic(say))()

Hello

...此處省略100個高級操作。

小牛學(xué)堂業(yè)內(nèi)唯一一家只做大數(shù)據(jù)培訓(xùn)的機(jī)構(gòu)

人工智能,Python學(xué)科全新授課模式

為滿足不同學(xué)習(xí)就業(yè)方向需求哗总,小牛學(xué)堂開設(shè)了几颜,人工智能,Python學(xué)科全新授課模式:學(xué)員經(jīng)過前期的基礎(chǔ)和高級階段學(xué)習(xí)后讯屈,采取分全棧工程師蛋哭、網(wǎng)絡(luò)爬蟲工程師、機(jī)器學(xué)習(xí)工程師以及人工智能等多個方向分班學(xué)習(xí)政策涮母,讓學(xué)員學(xué)的更加專業(yè)更加深度谆趾。

當(dāng)然,這并不意味著學(xué)員只可選擇一個方向進(jìn)行學(xué)習(xí)叛本,如完結(jié)方向課程后沪蓬,學(xué)員不急于就業(yè),可再次進(jìn)入另外兩個類別下繼續(xù)學(xué)習(xí)来候。

Tips:預(yù)約小牛學(xué)堂熱門課程30天免費試學(xué)跷叉,報名地址:https://jinshuju.net/f/xWkAC8

想了解更多前沿技術(shù),想獲取最新免費編程資源視頻源碼筆記营搅,小伙伴請往下看云挟!

qun號是:八六四,六三四转质,八四五园欣。qun內(nèi)有很多開發(fā)工具,很多干貨和技術(shù)資料分享休蟹!

如果您覺得此篇文章對您有幫助沸枯,歡迎關(guān)注微信公眾號:大禹編程,您的支持是對我最大的鼓勵鸡挠!共同學(xué)習(xí)辉饱,共同進(jìn)步

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市拣展,隨后出現(xiàn)的幾起案子彭沼,更是在濱河造成了極大的恐慌,老刑警劉巖备埃,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件姓惑,死亡現(xiàn)場離奇詭異,居然都是意外死亡按脚,警方通過查閱死者的電腦和手機(jī)于毙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辅搬,“玉大人唯沮,你說我怎么就攤上這事脖旱。” “怎么了介蛉?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵萌庆,是天一觀的道長。 經(jīng)常有香客問我币旧,道長践险,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任吹菱,我火速辦了婚禮巍虫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鳍刷。我一直安慰自己占遥,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布倾剿。 她就那樣靜靜地躺著筷频,像睡著了一般。 火紅的嫁衣襯著肌膚如雪前痘。 梳的紋絲不亂的頭發(fā)上凛捏,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機(jī)與錄音芹缔,去河邊找鬼坯癣。 笑死,一個胖子當(dāng)著我的面吹牛最欠,可吹牛的內(nèi)容都是我干的示罗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼芝硬,長吁一口氣:“原來是場噩夢啊……” “哼蚜点!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拌阴,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤绍绘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后迟赃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陪拘,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年纤壁,在試婚紗的時候發(fā)現(xiàn)自己被綠了左刽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡酌媒,死狀恐怖欠痴,靈堂內(nèi)的尸體忽然破棺而出迄靠,到底是詐尸還是另有隱情,我是刑警寧澤斋否,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布梨水,位于F島的核電站拭荤,受9級特大地震影響茵臭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜舅世,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一旦委、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧雏亚,春花似錦缨硝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至网持,卻和暖如春宜岛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背功舀。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工萍倡, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人辟汰。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓列敲,卻偏偏與公主長得像,于是被迫代替她去往敵國和親帖汞。 傳聞我的和親對象是個殘疾皇子戴而,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 專業(yè)考題類型管理運行工作負(fù)責(zé)人一般作業(yè)考題內(nèi)容選項A選項B選項C選項D選項E選項F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 8,985評論 0 13
  • 在C語言中,五種基本數(shù)據(jù)類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 3,340評論 0 2
  • 每天一句帶“花”的詩詞,最少一個月翩蘸。 1.11 含笑問檀郎所意,花強(qiáng)妾貌強(qiáng)?——張先《菩薩蠻》 1.12 小樓一夜聽春...
    墨_辰閱讀 293評論 0 0
  • 五絕·秋紅 文/青山野渡 秋葉已經(jīng)霜鹿鳖, ...
    青山野渡閱讀 261評論 7 19
  • 昨天在朋友圈看到一個剛生完孩子的好友發(fā)了一條狀態(tài):總感覺有那么一股氣出不來扁眯,會不會得抑郁癥啊翅帜? 我是剛從產(chǎn)后抑郁走...
    快快媽媽育兒說閱讀 180評論 1 0