【Python基础】Python 10 个习惯用法,看看你都知道不?
Python 使用習(xí)慣是指那些經(jīng)常被使用的語法、語義和結(jié)構(gòu),這樣寫更加符合 Python 風(fēng)格,看起來更像一個地道的 Pythoner.
本系列目的,分類整理 Python 使用習(xí)慣。
1. if not x
直接使用 x 和 not x 判斷 x 是否為 None 或空
x?=?[1,3,5]if?x:print('x?is?not?empty?')if?not?x:print('x?is?empty')下面寫法不夠 Pythoner
if?x?and?len(x)?>?0:print('x?is?not?empty?')if?x?is?None?or?len(x)?==?0:print('x?is?empty')2. enumerate 枚舉
直接使用 enumerate 枚舉容器,第二個參數(shù)表示索引的起始值
x?=?[1,?3,?5]for?i,?e?in?enumerate(x,?10):?#?枚舉print(i,?e)下面寫法不夠 Pythoner:
i?=?0while?i?<?len(x):print(i+10,?x[i])i+=13. in
判斷字符串是否包含某個子串,使用in明顯更加可讀:
x?=?'zen_of_python' if?'zen'?in?x:print('zen?is?in')find 返回值 要與 -1 判斷,不太符合習(xí)慣:
if?x.find('zen')?!=?-1:print('zen?is?in')4 zip 打包
使用 zip 打包后結(jié)合 for 使用輸出一對,更加符合習(xí)慣:
keys?=?['a',?'b',?'c'] values?=?[1,?3,?5]for?k,?v?in?zip(keys,?values):print(k,?v)下面不符合 Python 習(xí)慣:
d?=?{} i?=?0 for?k?in?keys:print(k,?values[i])i?+=?15 一對 '''
打印被分為多行的字符串,使用一對 ''' 更加符合 Python 習(xí)慣:
print('''"Oh?no!"?He?exclaimed. "It's?the?blemange!"''')下面寫法就太不 Python 風(fēng)格:
print('"Oh?no!"?He?exclaimed.\n'?+'It\'s?the?blemange!"')6 交換元素
直接解包賦值,更加符合 Python 風(fēng)格:
a,?b?=?1,?3 a,?b?=?b,?a??#?交換a,b不要再用臨時變量 tmp ,這不符合 Python 習(xí)慣:
tmp?=?a a?=?b b?=?tmp7 join 串聯(lián)
串聯(lián)字符串,更習(xí)慣使用 join:
chars?=?['P',?'y',?'t',?'h',?'o',?'n'] name?=?''.join(chars) print(name)下面不符合 Python 習(xí)慣:
name?=?'' for?c?in?chars:name?+=?c print(name)8 列表生成式
列表生成式構(gòu)建高效,符合 Python 習(xí)慣:
data?=?[1,?2,?3,?5,?8] result?=?[i?*?2?for?i?in?data?if?i?&?1]?#?奇數(shù)則乘以2 print(result)?#?[2,?6,?10]下面寫法不夠 Pythoner:
results?=?[] for?e?in?data:if?e?&?1:results.append(e*2) print(results)9 字典生成式
除了列表生成式,還有字典生成式:
keys?=?['a',?'b',?'c'] values?=?[1,?3,?5]d?=?{k:?v?for?k,?v?in?zip(keys,?values)} print(d)下面寫法不太 Pythoner:
d?=?{} for?k,?v?in?zip(keys,?values):d[k]?=?v print(d)10 __name__ == '__main__'有啥用
曾幾何時,看這別人代碼這么寫,我們也就跟著這么用吧,其實還沒有完全弄清楚這行到底干啥。
def?mymain():print('Doing?something?in?module',?__name__)if?__name__?==?'__main__':print('Executed?from?command?line')mymain()加入上面腳本命名為 MyModule,不管在 vscode 還是 pycharm 直接啟動,則直接打印出:
Executed?from?command?line Doing?something?in?module?__main__這并不奇怪,和我們預(yù)想一樣,因為有無這句 __main__ ,都會打印出這些。
但是當(dāng)我們 import MyModule 時,如果沒有這句,直接就打印出:
In?[2]:?import?MyModule Executed?from?command?line Doing?something?in?module?MyModule只是導(dǎo)入就直接執(zhí)行 mymain 函數(shù),這不符合我們預(yù)期。
如果有主句,導(dǎo)入后符合預(yù)期:
In?[6]:?import?MyModuleIn?[7]:?MyModule.mymain() Doing?something?in?module?MyModule以上就是 10 個 Python 習(xí)慣用法,第一期。希望能幫助到你,歡迎在看哦。
往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機器學(xué)習(xí)在線手冊深度學(xué)習(xí)筆記專輯AI基礎(chǔ)下載(pdf更新到25集)機器學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)專輯獲取一折本站知識星球優(yōu)惠券,復(fù)制鏈接直接打開:https://t.zsxq.com/yFQV7am本站qq群1003271085,加入微信群請掃碼喜歡文章,點個在看總結(jié)
以上是生活随笔為你收集整理的【Python基础】Python 10 个习惯用法,看看你都知道不?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【竞赛方案】2020腾讯广告算法大赛:高
- 下一篇: 【交通行业】轨迹相似性度量介绍