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

15個Pythonic的代碼示例(值得收藏)

 更新時間:2020年10月29日 11:12:11   投稿:zx  
這篇文章主要介紹了15個Pythonic的代碼示例(值得收藏),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

Python由于語言的簡潔性,讓我們以人類思考的方式來寫代碼,新手更容易上手,老鳥更愛不釋手。

要寫出 Pythonic(優(yōu)雅的、地道的、整潔的)代碼,還要平時多觀察那些大牛代碼,Github 上有很多非常優(yōu)秀的源代碼值得閱讀,比如:requests、flask、tornado,這里小明收集了一些常見的 Pythonic 寫法,幫助你養(yǎng)成寫優(yōu)秀代碼的習(xí)慣。

01. 變量交換

Bad

tmp = a
a = b
b = tmp

Pythonic

a,b = b,a

02. 列表推導(dǎo)

Bad

my_list = []
for i in range(10):
  my_list.append(i*2)

Pythonic

my_list = [i*2 for i in range(10)]

03. 單行表達(dá)式

雖然列表推導(dǎo)式由于其簡潔性及表達(dá)性,被廣受推崇。

但是有許多可以寫成單行的表達(dá)式,并不是好的做法。

Bad

print 'one'; print 'two'

if x == 1: print 'one'

if <complex comparison> and <other complex comparison>:
  # do something

Pythonic

print 'one'
print 'two'

if x == 1:
  print 'one'

cond1 = <complex comparison>
cond2 = <other complex comparison>
if cond1 and cond2:
  # do something

04. 帶索引遍歷

Bad

for i in range(len(my_list)):
  print(i, "-->", my_list[i])

Pythonic

for i,item in enumerate(my_list):
  print(i, "-->",item)

05. 序列解包

Pythonic

a, *rest = [1, 2, 3]
# a = 1, rest = [2, 3]

a, *middle, c = [1, 2, 3, 4]
# a = 1, middle = [2, 3], c = 4

06. 字符串拼接

Bad

letters = ['s', 'p', 'a', 'm']
s=""
for let in letters:
  s += let

Pythonic

letters = ['s', 'p', 'a', 'm']
word = ''.join(letters)

07. 真假判斷

Bad

if attr == True:
  print 'True!'

if attr == None:
  print 'attr is None!'

Pythonic

if attr:
  print 'attr is truthy!'

if not attr:
  print 'attr is falsey!'

if attr is None:
  print 'attr is None!'

08. 訪問字典元素

Bad

d = {'hello': 'world'}
if d.has_key('hello'):
  print d['hello']  # prints 'world'
else:
  print 'default_value'

Pythonic

d = {'hello': 'world'}

print d.get('hello', 'default_value') # prints 'world'
print d.get('thingy', 'default_value') # prints 'default_value'

# Or:
if 'hello' in d:
  print d['hello']

09. 操作列表

Bad

a = [3, 4, 5]
b = []
for i in a:
  if i > 4:
    b.append(i)

Pythonic

a = [3, 4, 5]
b = [i for i in a if i > 4]
# Or:
b = filter(lambda x: x > 4, a)

Bad

a = [3, 4, 5]
for i in range(len(a)):
  a[i] += 3

Pythonic

a = [3, 4, 5]
a = [i + 3 for i in a]
# Or:
a = map(lambda i: i + 3, a)

10. 文件讀取

Bad

f = open('file.txt')
a = f.read()
print a
f.close() 

Pythonic

with open('file.txt') as f:
  for line in f:
    print line 

11. 代碼續(xù)行

Bad

my_very_big_string = """For a long time I used to go to bed early. Sometimes, \
  when I had put out my candle, my eyes would close so quickly that I had not even \
  time to say “I'm going to sleep.”"""

from some.deep.module.inside.a.module import a_nice_function, another_nice_function, \
  yet_another_nice_function 

Pythonic

my_very_big_string = (
  "For a long time I used to go to bed early. Sometimes, "
  "when I had put out my candle, my eyes would close so quickly "
  "that I had not even time to say “I'm going to sleep.”"
)

from some.deep.module.inside.a.module import (
  a_nice_function, another_nice_function, yet_another_nice_function) 

12. 顯式代碼

Bad

def make_complex(*args):
  x, y = args
  return dict(**locals())

Pythonic

def make_complex(x, y):
  return {'x': x, 'y': y}

13. 使用占位符

Pythonic

filename = 'foobar.txt'
basename, _, ext = filename.rpartition('.')

14. 鏈?zhǔn)奖容^

Bad

if age > 18 and age < 60:
  print("young man")

Pythonic

if 18 < age < 60:
  print("young man")

理解了鏈?zhǔn)奖容^操作,那么你應(yīng)該知道為什么下面這行代碼輸出的結(jié)果是 False

>>> False == False == True 
False

15. 三目運算

這個保留意見。隨使用習(xí)慣就好。

Bad

if a > 2:
  b = 2
else:
  b = 1
#b = 2

Pythonic

a = 3  

b = 2 if a > 2 else 1
#b = 2 

參考文檔
http://docs.python-guide.org/en/latest/writing/style/
https://foofish.net/idiomatic_part2.html

到此這篇關(guān)于15個Pythonic的代碼示例(值得收藏)的文章就介紹到這了,更多相關(guān)Pythonic代碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用70行Python代碼實現(xiàn)一個遞歸下降解析器的教程

    使用70行Python代碼實現(xiàn)一個遞歸下降解析器的教程

    這篇文章主要介紹了使用70行Python代碼實現(xiàn)一個遞歸下降解析器的教程,文章分步講解最后整合出代碼,需要的朋友可以參考下
    2015-04-04
  • python中判斷集合范圍的方法小結(jié)

    python中判斷集合范圍的方法小結(jié)

    這篇文章主要介紹了python中判斷集合范圍的方法小結(jié),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Python中的兩個內(nèi)置模塊介紹

    Python中的兩個內(nèi)置模塊介紹

    這篇文章主要介紹了Python中的兩個內(nèi)置模塊介紹,本文講解Python啟動后默認(rèn)會加載的兩個內(nèi)建模塊,需要的朋友可以參考下
    2015-04-04
  • python 如何用map()函數(shù)創(chuàng)建多線程任務(wù)

    python 如何用map()函數(shù)創(chuàng)建多線程任務(wù)

    這篇文章主要介紹了python 使用map()函數(shù)創(chuàng)建多線程任務(wù)的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • python字典鍵值對的添加和遍歷方法

    python字典鍵值對的添加和遍歷方法

    下面小編就為大家?guī)硪黄猵ython字典鍵值對的添加和遍歷方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • Django中Q查詢及Q()對象 F查詢及F()對象用法

    Django中Q查詢及Q()對象 F查詢及F()對象用法

    這篇文章主要介紹了Django中Q查詢及Q()對象 F查詢及F()對象用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • python爬蟲 爬取超清壁紙代碼實例

    python爬蟲 爬取超清壁紙代碼實例

    這篇文章主要介紹了python爬蟲學(xué)習(xí) 爬取超清壁紙代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • 對Python中plt的畫圖函數(shù)詳解

    對Python中plt的畫圖函數(shù)詳解

    今天小編就為大家分享一篇對Python中plt的畫圖函數(shù)詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • 使用Python刪除文本文件中特定行的操作方法

    使用Python刪除文本文件中特定行的操作方法

    文件操作是編程中的重要方面,Python作為強(qiáng)大的編程語言,提供了處理文件的能力,刪除特定行是文件處理中常見的需求,本文給大家介紹了Python快速刪除文本文件中指定行的方法,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下
    2023-12-12
  • Python os模塊常用方法和屬性總結(jié)

    Python os模塊常用方法和屬性總結(jié)

    這篇文章主要介紹了Python os模塊常用方法和屬性總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02

最新評論