欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

用Python進行編碼的技巧有哪些

本篇內(nèi)容主要講解“用Python進行編碼的技巧有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“用Python進行編碼的技巧有哪些”吧!

創(chuàng)新互聯(lián)主要從事做網(wǎng)站、成都網(wǎng)站設計、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務南州晴隆,十余年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:13518219792

1. 可讀性的重要性

程序必須為了人們能夠讀懂而編寫,其次使機器能夠執(zhí)行。

首先,遵循編程規(guī)范,使程序易于閱讀。編程規(guī)范是經(jīng)驗豐富的程序員在編寫其代碼時所遵循的。除忽略這些規(guī)范外,沒有任何其他方式可以更快地證明您是位“新手”。其中一些規(guī)范特定于Python;其他則可由計算機程序員用于所有語言中。

用Python進行編碼的技巧有哪些

從本質(zhì)上講,可讀性一種特征,決定著他人理解您代碼某些部分的難易程度(而并非您本人!)。

舉例來說,我曾經(jīng)不習慣用垂直對齊方式來編寫代碼,也不習慣用起始分隔符對齊函數(shù)參數(shù)。

# No, to avoid:  func = long_function_name(var_one, var_two,         var_three, var_four)#Yes, func = long_function_name(var_one, var_two,                            var_three, var_four)

查看Python代碼樣式指南(https://www.python.org/dev/peps/pep-0008/)中的其他示例,并確定哪個示例看起來最佳。

我們經(jīng)常做的另一件重要事情是效仿曾看過或?qū)戇^的程序,這也是為何接觸可讀性強的程序?qū)τ诰幊虒W習十分重要的原因。

2. 避免無用條件

通常,一串if & elif & …. &  else長條件是代碼需要重構(gòu)的標志。這些條件使您的代碼冗長,且十分難于解釋。有時這些代碼可以被很容易地替換,例如,我曾經(jīng)常這樣做過:

def f():     if condition:         return True     else:         return False

這真是愚蠢!該函數(shù)返回一個布爾值,那么為什么還要首先使用if塊呢?正確的做法是:

def f():        return condition

在一項Hackerrank挑戰(zhàn)中,參賽者需要編寫一個函數(shù)來確定給定的年份是否為閏年。在公歷中,須考慮三個標準來確定閏年:

  • 該年份可被4整除,為閏年,除非:

  • 該年份同樣可被100整除,不是閏年,除非:

  • 該年份也可被400整除。為閏年

在這項挑戰(zhàn)中,不要考慮ifs和elses條件,僅做如下即可:

def is_leap(year):     return year % 4 == 0 and (year % 400 == 0 or year % 100 != 0)

3. 適當使用空白

  • 切勿混淆鍵盤制表定位鍵與空格鍵

  • 函數(shù)間進行一次換行

  • 等級間進行兩次換行

  • 在程序庫、列表、元組、自變量列表中的自變量的“,”后輸入空格,以及在程序庫的“:”后輸入空格。

  • 在分配和比較前后放置空格(列表中的自變量除外)

  • 括號前后或參數(shù)列表前無空格

def function(key, value=0):      """Return a dictionary and a list..."""      d = {key: value}      l = [key, value]      return d, l

4. 文檔字符串和注釋

  • 文檔字符串= 如何使用代

  • 注釋=為何代碼能(合理)執(zhí)行和如何執(zhí)行

文檔字符串解釋了如何使用代碼:

  • 解釋函數(shù)用途,即使對您而言,這個用途十分明顯。但以后,其用途對他人來說,不一定同樣明顯。

  • 描述期望參數(shù)、返回值及例外情況。

  • 如果該類函數(shù)與單個Caller緊密耦合,請?zhí)峒罢{(diào)用函數(shù)。

這些注釋向代碼維護人員說明維護需求。下面的示例也包括給自己的注釋,如:

  • # !!! BUG: …

  • # !!! FIX: This is a hack

  • # ??? Why is this here?

編寫良好的文檔字符串和注釋是您的責任,因此請始終使它們保持最新!在進行更改時,請確保注釋和文檔字符串與代碼一致。

您將在“文檔字符串慣例”

(https://www.python.org/dev/peps/pep-0257/)中找到專門用于文檔字符串的詳細PEP

5. 變量和分配

在其他編程語言中:

c = a a = b b = c

在Python中,最好將分配項放入一個代碼行中:

b, aa = a, b

您可能已經(jīng)看到代碼,但您知道它如何執(zhí)行嗎?

  • 逗號是構(gòu)造元組的句法。

  • 在右側(cè)創(chuàng)建一個元組(元組包)。

  • 元組是左側(cè)的目標(元組拆包)。

其他示例:

result = ''  for s in colors:      result += s

在結(jié)構(gòu)化數(shù)據(jù)循環(huán)中很有用(已保留上述變量名):

result = ' '.join(colors)

也可以采取相反的方式,只需確保左右具有相同的結(jié)構(gòu)即可:

>>> jan, (gname, gtitle, gphone) = people  >>> gname  'German'  >>> gtitle  'GBT'  >>> gphone  'unlisted'  >>> jan  ['Jan', 'Gomez', '+1-888-222-1546']

6. 列表拼接&合并

首先從字符串列表開始:

colors = ['red', 'blue', 'green', 'yellow']

我們想將這些字符串連接在一起以創(chuàng)建一條長鏈。特別是當子字符串的數(shù)量很大時,請避免這樣做:

result = ''  for s in colors:      result += s

這樣做非常慢。且占用大量內(nèi)存和性能??偤蛯⒗奂印⒋鎯?、然后繼續(xù)進行每個中間步驟。

取而代之,執(zhí)行以下操作:

colors = ['red', 'blue', 'green', 'yellow'] print ('Choose', ', '.join(colors[:-1]), \       'or', colors[-1])>> Choose red, blue, green or yellow

join()函數(shù)可一次完成整個副本。當僅處理幾個字符串時,它與其他函數(shù)沒有什么區(qū)別。卻能使您養(yǎng)成使用最佳函數(shù)構(gòu)建長鏈的習慣,因為面對成百上千的字符串,使用join()函數(shù)的確大有不同。

下面是使用join()函數(shù)的一些技巧。如果想使用空格作為分隔符:

# Do this :     # And not this :  if x:             if x == True:     pass                  pass# Do this :     # And not this :  if items:         if len(items) != 0:      pass                pass# and especially not that :          if items != []:                 pass

或逗號和空格:

result = ', '.join(colors)

為了使句子語法正確,除最后一個值之外的每個值之間都使用逗號(人們更喜歡使用“或”)。拆分列表的語法將完成其余工作。[:-1]返回除最后一個值外的所有內(nèi)容,我們可以將其與逗號連接。

colors = ['red', 'blue', 'green', 'yellow'] print ('Choose', ', '.join(colors[:-1]), \       'or', colors[-1])>> Choose red, blue, green or yellow

7. 測試真實條件

就布爾值而言,利用Python既簡潔又快速:

# Do this :     # And not this :  if x:             if x == True:     pass                  pass# Do this :     # And not this :  if items:         if len(items) != 0:      pass                pass# and especially not that :          if items != []:                 pass

8. 盡可能使用枚舉函數(shù)

枚舉函數(shù)獲取一個列表并返回數(shù)對(指數(shù),數(shù)項):

items = ['zero', 'one', 'two', 'three']  >>> print list(enumerate(items))  [(0, 'zero'), (1, 'one'), (2, 'two'), (3, 'three')]

使用列表顯示結(jié)果是必要的,因為枚舉函數(shù)是一種惰性函數(shù),僅在要求時才一次生成一個數(shù)項(一對)。for循環(huán)需要這種機制。一次Print函數(shù)不會得到任何結(jié)果,但必須擁有要顯示的完整消息。因此,在使用Print函數(shù)之前,我們應自動將生成器轉(zhuǎn)換為列表。

因此,使用下面的循環(huán)效果更佳:

>>>   [(x, y) for x in (1, 2, 3, 4) if x % 2 == 0        for y in ['a', 'b'] if y == 'b'] [(2, 'b'), (4, 'b')]

使用枚舉函數(shù)的版本比其他兩個版本更短,更簡單。以上為表明枚舉函數(shù)返回迭代器的示例(生成器是迭代器的一種)。

9. 列表推導式

使用for和if的傳統(tǒng)方式:

讓我們對小于100的數(shù)字平方求和:   # With a loop :  total = 0  for num in range(1, 101):      total += num * num

使用列表推導式:

new_list = [fn(item) for item in a_list if condition(item)]

列表推導式清晰直接。在同一個列表推導式中,可以包含幾個for循環(huán)和if條件,但如果超過兩個或三個,或條件十分復雜,我建議您使用普通的for循環(huán)。

例如,從0至9的二次冪列表:

>>> [n ** 2 for n in range(10)] [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

上個列表中的奇數(shù)列表:

>>> [n ** 2 for n in range(10) if n % 2]  [1, 9, 25, 49, 81]

更多示例:

>>>   [(x, y) for x in (1, 2, 3, 4) if x % 2 == 0         for y in ['a', 'b'] if y == 'b']  [(2, 'b'), (4, 'b')]

10. 生成器表達式

讓我們對小于100的數(shù)字平方求和:

讓我們對小于100的數(shù)字平方求和:   # With a loop :  total = 0  for num in range(1, 101):      total += num * num

還可以使用sum函數(shù),通過建立正確的序列來為我們更快地完成工作。

 # With a list comprehension :  total = sum([num * num for num in range(1, 101)])# With a generator expression :  total = sum(num * num for num in xrange(1, 101))

生成器表達式類似于列表推導式,只是在計算時屬于懶惰型。列表推導式一次計算整個結(jié)果,然后將其存儲在列表中。必要時,生成器表達式一次計算一個值。當序列很長并且生成的列表只是中間步驟而不是最終結(jié)果時,生成器表達式特別有用。

例如,如果我們必須對數(shù)十億個整數(shù)的平方求和,使用列表推導會達到內(nèi)存的飽和,但使用生成器表達式不會有任何問題。盡管這需要一段時間!

total = sum(num * num for num in range(1, 1000000000))

二者在語法上的差異是列表推導式帶有方括號,而生成器表達式則沒有。生成器表達式有時需要括號,因此您應始終使用它們。

簡而言之:

  • 當期望結(jié)果為列表時使用列表推導式。

  • 當列表僅為中間結(jié)果時使用生成器表達式。

到此,相信大家對“用Python進行編碼的技巧有哪些”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關內(nèi)容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

分享文章:用Python進行編碼的技巧有哪些
文章起源:http://aaarwkj.com/article22/gdiccc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App設計、微信小程序、企業(yè)網(wǎng)站制作、標簽優(yōu)化、定制開發(fā)、網(wǎng)頁設計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
国产亚洲精品精品国产亚洲| 18禁在线免费观看网站| 亚洲国产精品一区二区av| 国产不卡高清视频在线| 日本经典三级在线视频| 久久亚洲一区二区麻豆偷| 伊人色综合久久天天五月婷| 一区二区三区三级视频| 欧美 成人一区二区三区| 四虎精品国产一区二区三区| 国产精品久久一级黄片| av毛片在线播放免费| 成人夜间视频在线观看| 久久精品熟女亚洲av韩国| 果冻国产精品麻豆成人av| 极品性感尤物少妇粉嫩逼| 亚洲成人av网址大全| 激情综合五月激情综合| 欧美系列诱惑性国产精品| 日本色小姐美国青青草原| 日韩一区二区电影在线| 欧美精品激情在线不卡| 午夜两性做爰免费视频| 久久久久久成人综合色| 中文字幕亚洲精品四区| 亚洲熟妇精品一区二区三区| 日韩成人在线视频观看| 亚洲 欧美 日韩一区| 精品久久久久久亚洲电影| 亚洲最大午夜福利视频| 色哟哟亚洲精品在线视频| 成年人免费国产视频网站| 日韩欧美精品一区二区三区四区| 日本精品在线一区二区| 精品国产一区二区三区四不卡在线| 免费福利激情在线播放| 精品亚洲欧美日韩国产| 亚洲中文字幕精品视频乱码| 夫妻晚上同房太猛视频| 日韩精品成人区中文字幕| 国产欧美日本综合一区|