日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

Python:求求按規(guī)范寫我

來源: 責(zé)編: 時(shí)間:2023-11-07 17:17:00 321觀看
導(dǎo)讀一、寫在前面代碼被閱讀的次數(shù)遠(yuǎn)多于編寫的次數(shù)。我們可能花費(fèi)很多時(shí)間來編寫一段代碼,一旦完成后大概率就再不會(huì)重新寫它。當(dāng)這段代碼不僅是自己用時(shí),就得注意了,每次自己或其他人瀏覽,需要快速知道它的作用及編寫它的原

一、寫在前面

代碼被閱讀的次數(shù)遠(yuǎn)多于編寫的次數(shù)。Ecr28資訊網(wǎng)——每日最新資訊28at.com

Ecr28資訊網(wǎng)——每日最新資訊28at.com

我們可能花費(fèi)很多時(shí)間來編寫一段代碼,一旦完成后大概率就再不會(huì)重新寫它。當(dāng)這段代碼不僅是自己用時(shí),就得注意了,每次自己或其他人瀏覽,需要快速知道它的作用及編寫它的原因,因此可讀性顯得很重要,比如:Ecr28資訊網(wǎng)——每日最新資訊28at.com

>>> a = "Cai Xukun">>> b, c = a.split()>>> print(b, c, sep=', ')

看到這種腦闊痛。那么,每個(gè)人都有自己的編碼風(fēng)格,如何使整個(gè)團(tuán)隊(duì)趨于一致呢?Python PEP 8早已考慮到這種情況:https://peps.python.org/pep-0008/。Ecr28資訊網(wǎng)——每日最新資訊28at.com

我們可能互相不清楚每個(gè)人的風(fēng)格,但又必須閱讀與理解各自產(chǎn)出的代碼,那么此時(shí)遵循PEP 8會(huì)是優(yōu)秀選擇,也是每個(gè)Python從業(yè)者需要學(xué)習(xí)掌握的規(guī)范,一起看看吧!Ecr28資訊網(wǎng)——每日最新資訊28at.com

Ecr28資訊網(wǎng)——每日最新資訊28at.com

二 、命名規(guī)范

編寫代碼時(shí)需要命名很多東西,如變量、函數(shù)、類等。選擇合理的名稱將節(jié)省以后的時(shí)間和精力,確保能夠從名稱中得到某個(gè)變量或函數(shù)代表的意義,不恰當(dāng)?shù)拿Q還會(huì)徒增調(diào)試難度。Ecr28資訊網(wǎng)——每日最新資訊28at.com

Tip:切勿使用 l 、 O 或 I 單字母名稱,因?yàn)檫@些名稱可能會(huì)被誤認(rèn)為 1 和 0。Ecr28資訊網(wǎng)——每日最新資訊28at.com

Ecr28資訊網(wǎng)——每日最新資訊28at.com

1.命名風(fēng)格

以下是一些常見的命名約定以及如何使用示例,除了在代碼中選擇正確的命名樣式之外,還必須仔細(xì)選擇名稱:Ecr28資訊網(wǎng)——每日最新資訊28at.com

類型
Ecr28資訊網(wǎng)——每日最新資訊28at.com

命名約定
Ecr28資訊網(wǎng)——每日最新資訊28at.com

例子
Ecr28資訊網(wǎng)——每日最新資訊28at.com

Variable
Ecr28資訊網(wǎng)——每日最新資訊28at.com

使用小寫的單個(gè)字母、單詞或單詞,用下劃線分隔單詞
Ecr28資訊網(wǎng)——每日最新資訊28at.com

x, var, my_variable
Ecr28資訊網(wǎng)——每日最新資訊28at.com

Function
Ecr28資訊網(wǎng)——每日最新資訊28at.com

使用一個(gè)或多個(gè)小寫單詞,用下劃線分隔單詞
Ecr28資訊網(wǎng)——每日最新資訊28at.com

function, my_function
Ecr28資訊網(wǎng)——每日最新資訊28at.com

Class
Ecr28資訊網(wǎng)——每日最新資訊28at.com

每個(gè)單詞都以大寫字母開頭,這種風(fēng)格稱為駝峰式命名法或帕斯卡式命名法
Ecr28資訊網(wǎng)——每日最新資訊28at.com

Model, MyClass
Ecr28資訊網(wǎng)——每日最新資訊28at.com

Method
Ecr28資訊網(wǎng)——每日最新資訊28at.com

使用一個(gè)或多個(gè)小寫單詞,用下劃線分隔單詞
Ecr28資訊網(wǎng)——每日最新資訊28at.com

class_method, method
Ecr28資訊網(wǎng)——每日最新資訊28at.com

Constant
Ecr28資訊網(wǎng)——每日最新資訊28at.com

使用大寫的單個(gè)字母、單詞或單詞,用下劃線分隔單詞
Ecr28資訊網(wǎng)——每日最新資訊28at.com

CONSTANT, MY_CONSTANT, MY_LONG_CONSTANT
Ecr28資訊網(wǎng)——每日最新資訊28at.com

Module
Ecr28資訊網(wǎng)——每日最新資訊28at.com

使用簡(jiǎn)短的小寫單詞,用下劃線分隔單詞
Ecr28資訊網(wǎng)——每日最新資訊28at.com

module.py, my_module.py
Ecr28資訊網(wǎng)——每日最新資訊28at.com

Package
Ecr28資訊網(wǎng)——每日最新資訊28at.com

使用簡(jiǎn)短的小寫單詞,不要用下劃線分隔單詞
Ecr28資訊網(wǎng)——每日最新資訊28at.com

package, mypackage
Ecr28資訊網(wǎng)——每日最新資訊28at.com

2.如何選擇名字

在編寫代碼時(shí)對(duì)命名選擇需要進(jìn)行足夠的思考,在Python中為對(duì)象命名的最佳方法是使用描述性的名稱。Ecr28資訊網(wǎng)——每日最新資訊28at.com

在命名變量時(shí),可能會(huì)選擇簡(jiǎn)單的、單個(gè)字母的小寫名稱。比如這篇文章開頭的引例,要將一個(gè)人的姓名存儲(chǔ)為字符串,并且想要使用字符串切片來以不同的方式格式化姓名嗎,寫成如下形式是不是更舒服?Ecr28資訊網(wǎng)——每日最新資訊28at.com

>>> name = 'Cai Xukun'>>> first_name, last_name = name.split()>>> print(last_name, first_name, sep=', ')

同樣地,為了偷懶,你可能在選擇名稱時(shí)使用縮寫。如下示例中,定義了一個(gè)名為db()的函數(shù),它接受一個(gè)參數(shù)x并將其乘2倍,乍一看,這似乎是一個(gè)明智的選擇,db()是double的縮寫,但在一段時(shí)間后再回到這段代碼,可能已經(jīng)忘記了這個(gè)函數(shù)實(shí)現(xiàn)什么,并為偷懶付出相應(yīng)代價(jià):Ecr28資訊網(wǎng)——每日最新資訊28at.com

def db(x):    return x * 2

以下寫法則要清晰得多:Ecr28資訊網(wǎng)——每日最新資訊28at.com

def multiply_by_two(x):    return x * 2

相同的原則也適用于Python中所有其他數(shù)據(jù)類型和對(duì)象,始終盡量使用最簡(jiǎn)潔且具有描述性的名稱總不會(huì)出錯(cuò)。Ecr28資訊網(wǎng)——每日最新資訊28at.com

三、代碼排版布局

垂直空白,即空行,對(duì)于提升代碼的可讀性起著關(guān)鍵作用。密集堆疊的代碼可能令人感到壓抑,不易理解,同樣地,代碼中過多的空行則會(huì)讓其看起來過于稀疏,帶來不必要的滾動(dòng)。Ecr28資訊網(wǎng)——每日最新資訊28at.com

將頂層函數(shù)和類用兩個(gè)空行隔開。頂層函數(shù)和類通常相對(duì)獨(dú)立,承擔(dān)不同的功能。因此,為其周圍添加適量的垂直空間是合理的,這有助于清晰地標(biāo)示它們的獨(dú)立性:Ecr28資訊網(wǎng)——每日最新資訊28at.com

class MyFirstClass:    passclass MySecondClass:    passdef top_level_function():    return None

用一個(gè)空行分隔類內(nèi)方法定義:Ecr28資訊網(wǎng)——每日最新資訊28at.com

class MyClass:    def first_method(self):        return None    def second_method(self):        return None

在函數(shù)內(nèi)部使用空行以展示清晰的步驟。有時(shí),一個(gè)復(fù)雜的函數(shù)在return之前需要完成多個(gè)步驟。為了幫助讀者理解函數(shù)內(nèi)部的邏輯,每個(gè)步驟之間留出一個(gè)空行會(huì)很有幫助。Ecr28資訊網(wǎng)——每日最新資訊28at.com

在下面的示例中,有一個(gè)計(jì)算列表方差的函數(shù)。這是一個(gè)兩步問題,通過在它們之間留出空行來表示每個(gè)步驟。在return之前也有一個(gè)空行,有助于清楚地看到返回了什么內(nèi)容:Ecr28資訊網(wǎng)——每日最新資訊28at.com

def calculate_variance(number_list):    sum_list = 0    for number in number_list:        sum_list = sum_list + number    mean = sum_list / len(number_list)    sum_squares = 0    for number in number_list:        sum_squares = sum_squares + number**2    mean_squares = sum_squares / len(number_list)    return mean_squares - mean**2

1.最大行長(zhǎng)度和換行

PEP 8建議將行限制在79個(gè)字符以內(nèi),但很多時(shí)候?qū)⒄Z句限制在79個(gè)字符或更少并不總是可能的。PEP 8概述了語句跨越多行的方法。Ecr28資訊網(wǎng)——每日最新資訊28at.com

如果代碼包含在括號(hào)、方括號(hào)或花括號(hào)內(nèi),Python會(huì)假定它是行的延續(xù):Ecr28資訊網(wǎng)——每日最新資訊28at.com

def function(arg_one, arg_two,             arg_three, arg_four):    return arg_one

還可以使用反斜杠來換行:Ecr28資訊網(wǎng)——每日最新資訊28at.com

from mypkg import example1, /    example2, example3

如果需要在二元操作符(如+和)周圍進(jìn)行換行,應(yīng)該在操作符之前進(jìn)行*。這個(gè)規(guī)則源自數(shù)學(xué),數(shù)學(xué)家們一致認(rèn)為,在二元操作符之前換行可以提高可讀性,可以立即看到正在相加或相減的變量,因?yàn)椴僮鞣o鄰正在操作的變量:Ecr28資訊網(wǎng)——每日最新資訊28at.com

total = (first_variable         + second_variable         - third_variable)

現(xiàn)在,讓我們看一個(gè)在二元操作符之后換行的示例:Ecr28資訊網(wǎng)——每日最新資訊28at.com

total = (first_variable +         second_variable -         third_variable)

在這里,很難看出正在相加的變量和正在相減的變量。Ecr28資訊網(wǎng)——每日最新資訊28at.com

在二元操作符之前換行會(huì)產(chǎn)生更可讀的代碼,因此PEP 8鼓勵(lì)這樣做。Ecr28資訊網(wǎng)——每日最新資訊28at.com

2.縮進(jìn)

縮進(jìn)在Python中非常重要。在Python中,代碼行的縮進(jìn)級(jí)別決定了語句如何分組在一起。Ecr28資訊網(wǎng)——每日最新資訊28at.com

考慮以下示例:Ecr28資訊網(wǎng)——每日最新資訊28at.com

x = 3if x > 5:    print('x is larger than 5')

縮進(jìn)的打印語句告訴Python只有在if語句返回True時(shí)才執(zhí)行它。相同的縮進(jìn)規(guī)則適用于在調(diào)用函數(shù)時(shí)告訴Python要執(zhí)行哪些代碼,或者哪些代碼屬于給定的類。Ecr28資訊網(wǎng)——每日最新資訊28at.com

PEP 8規(guī)定的關(guān)鍵縮進(jìn)規(guī)則如下:Ecr28資訊網(wǎng)——每日最新資訊28at.com

  • 使用4個(gè)連續(xù)的空格來表示縮進(jìn)
  • 優(yōu)先選擇空格而不是制表符

3.制表符 vs. 空格

如上所述,在縮進(jìn)代碼時(shí)應(yīng)該使用空格而不是制表符。當(dāng)按下Tab鍵時(shí),可以調(diào)整文本編輯器的設(shè)置,將制表符字符輸出為4個(gè)空格。Ecr28資訊網(wǎng)——每日最新資訊28at.com

Python 3不允許混合使用制表符和空格。如果正在使用Python 3,則會(huì)拋出這些錯(cuò)誤:Ecr28資訊網(wǎng)——每日最新資訊28at.com

$ python3 code.py  File "code.py", line 3    print(i, j)              ^TabError: inconsistent use of tabs and spaces in indentation

可以使用制表符或空格來指示縮進(jìn)的Python代碼。但是,如果使用的是Python 3,必須在選擇上保持一致,否則,代碼將無法運(yùn)行。Ecr28資訊網(wǎng)——每日最新資訊28at.com

4.換行后的縮進(jìn)

當(dāng)使用行延續(xù)將行保持在79個(gè)字符以下時(shí),使用縮進(jìn)來提高可讀性非常有用。幫助區(qū)分兩行代碼和跨越兩行的單行代碼。可以使用兩種縮進(jìn)樣式,第一種是將縮進(jìn)塊與起始分隔符對(duì)齊:Ecr28資訊網(wǎng)——每日最新資訊28at.com

def function(arg_one, arg_two,             arg_three, arg_four):    return arg_one

有時(shí),只需要4個(gè)空格與起始分隔符對(duì)齊。這通常發(fā)生在跨多行的if語句中,因?yàn)閕f、空格和起始括號(hào)共計(jì)4個(gè)字符。在這種情況下,很難確定if語句內(nèi)部的嵌套代碼塊從哪里開始:Ecr28資訊網(wǎng)——每日最新資訊28at.com

x = 5if (x > 3 and    x < 10):    print(x)

在這種情況下,PEP 8提供了兩種改進(jìn)可讀性的替代方法:Ecr28資訊網(wǎng)——每日最新資訊28at.com

  • 在最終條件之后添加注釋。由于大多數(shù)編輯器中的語法高亮,這將把條件與嵌套代碼分開
x = 5if (x > 3 and    x < 10):    # Both conditions satisfied    print(x)
  • 在行延續(xù)上添加額外的縮進(jìn)
x = 5if (x > 3 and        x < 10):    print(x)

換行后的另一種縮進(jìn)樣式是懸掛縮進(jìn),懸掛縮進(jìn)即段落或語句中除了第一行外的每一行都縮進(jìn)。可以使用懸掛縮進(jìn)來在視覺上表示代碼行的延續(xù):Ecr28資訊網(wǎng)——每日最新資訊28at.com

var = function(    arg_one, arg_two,    arg_three, arg_four)

當(dāng)使用懸掛縮進(jìn)時(shí),第一行不得有任何參數(shù)。Ecr28資訊網(wǎng)——每日最新資訊28at.com

Ecr28資訊網(wǎng)——每日最新資訊28at.com

使用懸掛縮進(jìn)時(shí),添加額外的縮進(jìn)以區(qū)分連續(xù)的行與函數(shù)內(nèi)部的代碼。如以下示例很難閱讀,因?yàn)楹瘮?shù)內(nèi)部代碼與連續(xù)的行處于相同的縮進(jìn)級(jí)別:Ecr28資訊網(wǎng)——每日最新資訊28at.com

def function(    arg_one, arg_two,    arg_three, arg_four):    return arg_one

相反,最好在行延續(xù)上使用雙重縮進(jìn)。這有助于區(qū)分函數(shù)參數(shù)和函數(shù)體,提高可讀性:Ecr28資訊網(wǎng)——每日最新資訊28at.com

def function(        arg_one, arg_two,        arg_three, arg_four):    return arg_one

5.右括號(hào)怎么處理

行延續(xù)允許在括號(hào)、方括號(hào)或大括號(hào)內(nèi)換行。但很容易忽略閉合括號(hào)的位置,將它放在合適的地方很重要。PEP 8提供了兩個(gè)選項(xiàng)來確定隱式行延續(xù)中閉合括號(hào)的位置。Ecr28資訊網(wǎng)——每日最新資訊28at.com

將閉合括號(hào)與前一行的第一個(gè)非空白字符對(duì)齊:Ecr28資訊網(wǎng)——每日最新資訊28at.com

list_of_numbers = [    1, 2, 3,    4, 5, 6,    7, 8, 9    ]

將閉合括號(hào)與開始構(gòu)造的行的第一個(gè)字符對(duì)齊:Ecr28資訊網(wǎng)——每日最新資訊28at.com

list_of_numbers = [    1, 2, 3,    4, 5, 6,    7, 8, 9]

可以自由選擇使用哪個(gè)選項(xiàng),但請(qǐng)保持一致。Ecr28資訊網(wǎng)——每日最新資訊28at.com

四、注釋

使用注釋來記錄代碼的編寫以便自己和任何合作者都能理解。在添加注釋到代碼時(shí),請(qǐng)記住以下要點(diǎn):Ecr28資訊網(wǎng)——每日最新資訊28at.com

  • 將注釋和文檔字符串的行長(zhǎng)度限制在72個(gè)字符以內(nèi)
  • 使用完整的句子,以大寫字母開頭。
  • 確保在更改代碼時(shí)更新注釋

1.塊注釋

塊注釋非常有用,幫助他人理解給定代碼塊的目的和功能,PEP 8為編寫塊注釋提供以下規(guī)則:Ecr28資訊網(wǎng)——每日最新資訊28at.com

  • 將塊注釋的縮進(jìn)與它們描述的代碼保持一致
  • 每行以#開頭,后跟一個(gè)空格
  • 使用只包含一個(gè)#的行來分隔段落

以下是解釋for循環(huán)功能的塊注釋示例。為保持79字符行限制,句子被換行:Ecr28資訊網(wǎng)——每日最新資訊28at.com

for i in range(0, 10):    # Loop over i ten times and print out the value of i, followed by a    # new line character    print(i, '/n')

有時(shí),如果代碼技術(shù)含量高,那么在塊注釋中使用多個(gè)段落是必要的:Ecr28資訊網(wǎng)——每日最新資訊28at.com

def quadratic(a, b, c, x):    # Calculate the solution to a quadratic equation using the quadratic    # formula.    #    # There are always two solutions to a quadratic equation, x_1 and x_2.    x_1 = (- b+(b**2-4*a*c)**(1/2)) / (2*a)    x_2 = (- b-(b**2-4*a*c)**(1/2)) / (2*a)    return x_1, x_2

如果不確定哪種注釋類型適合,通常可以選擇使用塊注釋。Ecr28資訊網(wǎng)——每日最新資訊28at.com

2.行內(nèi)注釋

行內(nèi)注釋用于解釋代碼片段中的單個(gè)語句。以下是PEP 8關(guān)于行內(nèi)注釋的建議:Ecr28資訊網(wǎng)——每日最新資訊28at.com

  • 適度使用行內(nèi)注釋
  • 將行內(nèi)注釋寫在與其引用的語句同一行上
  • 將行內(nèi)注釋與語句之間用兩個(gè)或更多空格分隔開
  • 與塊注釋一樣,以#和一個(gè)空格開頭
  • 不要用它們來解釋顯而易見的事情

以下是行內(nèi)注釋的示例:Ecr28資訊網(wǎng)——每日最新資訊28at.com

x = 5  # This is an inline comment

有時(shí),行內(nèi)注釋是必要的,但可以使用更好的命名約定來替代:Ecr28資訊網(wǎng)——每日最新資訊28at.com

x = 'John Smith'  # Student Name

在這個(gè)示例中,行內(nèi)注釋確實(shí)提供了額外的信息。但是,將“x”作為人名的變量名是很呆的做法,如果更改變量名稱,就不需要行內(nèi)注釋:Ecr28資訊網(wǎng)——每日最新資訊28at.com

student_name = 'John Smith'

最后,諸如以下的行內(nèi)注釋是不好的習(xí)慣(脫褲子放P),因?yàn)殛愂隽孙@而易見的事實(shí)并且會(huì)使代碼混亂:Ecr28資訊網(wǎng)——每日最新資訊28at.com

empty_list = []  # Initialize empty listx = 5x = x * 5  # Multiply x by 5

3.文檔字符串

文檔字符串,docstrings,是出現(xiàn)在任何函數(shù)、類、方法或模塊的第一行的雙引號(hào)(“”")或單引號(hào)(‘’')括起來的字符串。用于解釋和記錄特定的代碼塊。PEP 257有專門闡述docstrings,docstrings最重要規(guī)則如下:Ecr28資訊網(wǎng)——每日最新資訊28at.com

  • 在docstrings兩側(cè)使用三個(gè)雙引號(hào),如 “”“這是一個(gè)docstring”“”
  • 為所有公共模塊、函數(shù)、類和方法編寫docstrings
  • 將終止多行docstring的"""單獨(dú)放在一行上
def quadratic(a, b, c, x):    """Solve quadratic equation via the quadratic formula.    A quadratic equation has the following form:    ax**2 + bx + c = 0    There always two solutions to a quadratic equation: x_1 & x_2.    """    x_1 = (- b+(b**2-4*a*c)**(1/2)) / (2*a)    x_2 = (- b-(b**2-4*a*c)**(1/2)) / (2*a)    return x_1, x_2
  • 對(duì)于單行docstrings,請(qǐng)將"""保持在同一行上
def quadratic(a, b, c, x):    """Use the quadratic formula"""    x_1 = (- b+(b**2-4*a*c)**(1/2)) / (2*a)    x_2 = (- b-(b**2-4*a*c)**(1/2)) / (2*a)    return x_1, x_2

五、表達(dá)式中的空格

在表達(dá)式和語句中適當(dāng)使用空格可以非常有助于閱讀。如果沒有足夠的空格,代碼可能會(huì)難以閱讀,因?yàn)樗鼈兌紨D在一起。如果空格過多,則在語句中可能很難在視覺上組合相關(guān)術(shù)語。Ecr28資訊網(wǎng)——每日最新資訊28at.com

1.二元操作符周圍的空格

在以下二元操作符的兩側(cè)都加上單個(gè)空格:Ecr28資訊網(wǎng)——每日最新資訊28at.com

  • 賦值操作符(=,+=,-=等)
  • 比較(==,!=,>,<,>=,<=)和(is,is not,in,not in)
  • 布爾運(yùn)算(and,not,or)

Tip:當(dāng)使用 = 為函數(shù)參數(shù)分配默認(rèn)值時(shí),不要用空格如:def function(default_parameter=5):Ecr28資訊網(wǎng)——每日最新資訊28at.com

Ecr28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)語句中有多個(gè)操作符時(shí),在每個(gè)操作符前后都添加單個(gè)空格可能會(huì)顯得混亂。相反,最好只在具有最低優(yōu)先級(jí)的操作符周圍添加空格,特別是在進(jìn)行數(shù)學(xué)操作時(shí)。以下是幾個(gè)示例:Ecr28資訊網(wǎng)——每日最新資訊28at.com

# Recommendedy = x**2 + 5z = (x+y) * (x-y)# Not Recommendedy = x ** 2 + 5z = (x + y) * (x - y)

還可以將此應(yīng)用于具有多個(gè)條件的if語句:Ecr28資訊網(wǎng)——每日最新資訊28at.com

# Not recommendedif x > 5 and x % 2 == 0:    print('x is larger than 5 and divisible by 2!')

在上面的示例中,and操作符具有最低優(yōu)先級(jí)。因此,以下方式可能更清晰地表示:Ecr28資訊網(wǎng)——每日最新資訊28at.com

# Recommendedif x>5 and x%2==0:    print('x is larger than 5 and divisible by 2!')

可以自由選擇哪種更清晰,但請(qǐng)注意,操作符兩側(cè)必須使用相同數(shù)量的空格。Ecr28資訊網(wǎng)——每日最新資訊28at.com

在切片中,冒號(hào)充當(dāng)二元操作符。因此,適用于前一節(jié)中概述的規(guī)則,兩側(cè)應(yīng)具有相同數(shù)量的空格:Ecr28資訊網(wǎng)——每日最新資訊28at.com

list[3:4]# Treat the colon as the operator with lowest prioritylist[x+1 : x+2]# In an extended slice, both colons must be# surrounded by the same amount of whitespacelist[3:4:5]list[x+1 : x+2 : x+3]# The space is omitted if a slice parameter is omittedlist[x+1 : x+2 :]

2.何時(shí)避免添加空格

在某些情況下,添加空格可能會(huì)使代碼更難閱讀。PEP 8明確提供了一些不適合使用空格的示例。Ecr28資訊網(wǎng)——每日最新資訊28at.com

最容易出Bug的是在行末,即尾隨空格。因?yàn)樗遣豢梢姷模赡軙?huì)產(chǎn)生難以追蹤的錯(cuò)誤,以下概述了一些應(yīng)避免添加空格的情況:Ecr28資訊網(wǎng)——每日最新資訊28at.com

  • 緊跟在括號(hào)、方括號(hào)或花括號(hào)內(nèi):
# Recommendedmy_list = [1, 2, 3]# Not recommendedmy_list = [ 1, 2, 3, ]
  • 在逗號(hào)、分號(hào)或冒號(hào)之前:
# Recommendedprint(x, y)# Not recommendedprint(x , y)
  • 在函數(shù)參數(shù)列表左括號(hào)之前:
def double(x):    return x * 2# Recommendeddouble(3)# Not recommendeddouble (3)
  • 在索引或切片的左括號(hào)之前:
# Recommendedlist[3]# Not recommendedlist [3]
  • 在尾隨逗號(hào)和閉合括號(hào)之間:
# Recommendedtuple = (1,)# Not recommendedtuple = (1, )
  • 用于對(duì)齊賦值操作符:
# Recommendedvar1 = 5var2 = 6some_long_var = 7# Not recommendedvar1          = 5var2          = 6some_long_var = 7

六、編程建議

1.不要使用等價(jià)運(yùn)算符將布爾值與True|False進(jìn)行比較

# Not recommendedmy_bool = 6 > 5if my_bool == True:    return '6 is bigger than 5'

在這里使用等價(jià)運(yùn)算符(==)是不必要的,bool只能取True或False的值,以下寫法已足夠,PEP 8鼓勵(lì)使用它:Ecr28資訊網(wǎng)——每日最新資訊28at.com

# Recommendedif my_bool:    return '6 is bigger than 5'

如果要檢查列表是否為空,首先會(huì)想要檢查列表的長(zhǎng)度,如果列表為空,它的長(zhǎng)度為0,在if語句中使用時(shí)等效于False:Ecr28資訊網(wǎng)——每日最新資訊28at.com

# Not recommendedmy_list = []if not len(my_list):    print('List is empty!')

然而,在Python中,任何空列表、字符串或元組都是False。因此,可以找到一個(gè)更簡(jiǎn)單的替代方案:Ecr28資訊網(wǎng)——每日最新資訊28at.com

# Recommendedmy_list = []if not my_list:    print('List is empty!')

雖然這兩個(gè)示例都會(huì)輸出"List is empty!",PEP 8鼓勵(lì)使用第二個(gè)方式。Ecr28資訊網(wǎng)——每日最新資訊28at.com

2.在if語句中,使用"is not"而不是"not … is"

# Recommendedif x is not None:    return 'x exists!'

不要寫成以下形式:Ecr28資訊網(wǎng)——每日最新資訊28at.com

# Not recommendedif not x is None:    return 'x exists!'

在檢查字符串是否以特定詞開頭或結(jié)尾時(shí),使用.startswith()和.endswith()而不是切片:Ecr28資訊網(wǎng)——每日最新資訊28at.com

# Not recommendedif word[:3] == 'cat':    print('The word starts with "cat"')

使用.startswith():Ecr28資訊網(wǎng)——每日最新資訊28at.com

# Recommendedif word.startswith('cat'):    print('The word starts with "cat"')

同樣的原則也適用于檢查后綴:Ecr28資訊網(wǎng)——每日最新資訊28at.com

# Recommendedif file_name.endswith('jpg'):    print('The file is a JPEG')

以上就是本期的全部?jī)?nèi)容,如果想了解更多關(guān)于PEP 8的細(xì)節(jié)可以訪問:https://pep8.org/。Ecr28資訊網(wǎng)——每日最新資訊28at.com

別忘了點(diǎn)贊再看哈,我是啥都生,下期再見!Ecr28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-17554-0.htmlPython:求求按規(guī)范寫我

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 提升您的 Go 應(yīng)用性能的六種方法

下一篇: Go的插件機(jī)制:動(dòng)態(tài)加載與卸載

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 分享六款相見恨晚的PPT模版網(wǎng)站, 祝你做出精美的PPT!

    1、OfficePLUSOfficePLUS網(wǎng)站旨在為全球Office用戶提供豐富的高品質(zhì)原創(chuàng)PPT模板、實(shí)用文檔、數(shù)據(jù)圖表及個(gè)性化定制服務(wù)。優(yōu)點(diǎn):OfficePLUS是微軟官方網(wǎng)站,囊括PPT模板、Word模
  • 這款新興工具平臺(tái),讓你的電腦效率翻倍

    隨著信息技術(shù)的發(fā)展,我們獲取信息的渠道越來越多,但是處理信息的效率卻成為一個(gè)瓶頸。于是各種工具應(yīng)運(yùn)而生,都在爭(zhēng)相解決我們的工作效率問題。今天我要給大家介紹一款效率
  • 一文掌握 Golang 模糊測(cè)試(Fuzz Testing)

    模糊測(cè)試(Fuzz Testing)模糊測(cè)試(Fuzz Testing)是通過向目標(biāo)系統(tǒng)提供非預(yù)期的輸入并監(jiān)視異常結(jié)果來發(fā)現(xiàn)軟件漏洞的方法。可以用來發(fā)現(xiàn)應(yīng)用程序、操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議等中的漏洞或
  • 一個(gè)注解實(shí)現(xiàn)接口冪等,這樣才優(yōu)雅!

    場(chǎng)景碼猿慢病云管理系統(tǒng)中其實(shí)高并發(fā)的場(chǎng)景不是很多,沒有必要每個(gè)接口都去考慮并發(fā)高的場(chǎng)景,比如添加住院患者的這個(gè)接口,具體的業(yè)務(wù)代碼就不貼了,業(yè)務(wù)偽代碼如下:圖片上述代碼有
  • 中國家電海外掘金正當(dāng)時(shí)|出海專題

    作者|吳南南編輯|胡展嘉運(yùn)營|陳佳慧出品|零態(tài)LT(ID:LingTai_LT)2023年,出海市場(chǎng)戰(zhàn)況空前,中國創(chuàng)業(yè)者在海外紛紛摩拳擦掌,以期能夠把中國的商業(yè)模式、創(chuàng)業(yè)理念、戰(zhàn)略打法輸出海外,他們依
  • 花7萬退貨退款無門:誰在縱容淘寶珠寶商家造假?

    來源:極點(diǎn)商業(yè)作者:楊銘在淘寶購買珠寶玉石后,因?yàn)楸WC金不夠賠付,店鋪關(guān)閉,退貨退款難、維權(quán)無門的比比皆是。&ldquo;提供相關(guān)產(chǎn)品鑒定證書,支持全國復(fù)檢,可以30天無理由退換貨。&
  • 東方甄選單飛:有些鳥注定是關(guān)不住的

    文/彭寬鴻編輯/羅卿東方甄選創(chuàng)始人俞敏洪帶隊(duì)的&ldquo;7天甘肅行&rdquo;直播活動(dòng)已在近日順利收官。成立后一年多時(shí)間里,東方甄選要脫離抖音自立門戶的傳聞不絕于耳,&ldquo;7
  • 小米MIX Fold 3下月亮相:今年唯一無短板的全能折疊屏

    這段時(shí)間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都有新的進(jìn)展,其中榮耀、三星都已陸續(xù)發(fā)布了最新的折疊屏旗艦,尤其號(hào)榮耀Magi
  • 信通院:小米、華為等11家應(yīng)用商店基本完成APP簽名及驗(yàn)簽工作

    中國信通院表示,目前,小米、華為、OPPO、vivo、360手機(jī)助手、百度手機(jī)助手、應(yīng)用寶、豌豆莢和努比亞等9家應(yīng)用商店,以及抖音和快手2家新型應(yīng)用分發(fā)平
Top 主站蜘蛛池模板: 鱼台县| 新密市| 定日县| 盐池县| 铜川市| 伊金霍洛旗| 泗阳县| 抚宁县| 周至县| 小金县| 东宁县| 龙里县| 孟津县| 罗源县| 渭源县| 四川省| 林州市| 濮阳市| 正镶白旗| 伽师县| 岳阳市| 迁西县| 辽中县| 自治县| 黄平县| 广水市| 大渡口区| 吴堡县| 兰州市| 武陟县| 平昌县| 武宣县| 威宁| 三穗县| 铁岭市| 浠水县| 巨野县| 芷江| 沙湾县| 延边| 崇义县|