溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python代碼縮進(jìn)和測(cè)試模塊的示例分析

發(fā)布時(shí)間:2021-07-26 14:19:34 來(lái)源:億速云 閱讀:138 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹了Python代碼縮進(jìn)和測(cè)試模塊的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

一、Python代碼縮進(jìn)

Python 函數(shù)沒有明顯的 begin 和 end ,沒有標(biāo)明函數(shù)的開始和結(jié)束的花括號(hào)。唯一的分隔符是一個(gè)冒號(hào) ( : ),接著代碼本身是縮進(jìn)的。

例如:縮進(jìn) buil dCon necti onStr ing 函數(shù)

def buildConnectionString(params):
"""Build a connection string from a dictionary of parameters.
Returns string."""
return ";".join(["%s=%s" % (k, v) for k, v in params.items()])

代碼塊是通過(guò)它們的縮進(jìn)來(lái)定義的。我所說(shuō)的“代碼塊”是指:函數(shù)、 if 語(yǔ)句、for 循環(huán)、 while 循環(huán),等等。開始縮進(jìn)表示塊的開始,取消縮進(jìn)表示塊的結(jié)束。不存在明顯的括號(hào),大括號(hào)或關(guān)鍵字。這就意味著空白是重要的,并且要一致。在這個(gè)例子中,函數(shù)代碼 (包括 doc string ) 縮進(jìn)了 4 個(gè)空格。不一定非要是 4 個(gè),只要一致就可以了。沒有縮進(jìn)的第一行則被視為在函數(shù)體之外。

例如: “if 語(yǔ)句” 展示了一個(gè) if 語(yǔ)句縮進(jìn)的例子。

def fib(n): (1)
print 'n =', n (2)
if n > 1: (3)
return n * fib(n - 1)
else: (4)
print 'end of the line'
return 1

(1) 這是一個(gè)名為 fib 的函數(shù),有一個(gè)參數(shù) n 。在函數(shù)內(nèi)的所有代碼都是縮進(jìn)的。

(2) 在 Python 中向屏幕輸出內(nèi)容非常容易,只要使用 print 即可。 print 語(yǔ)句可以接受任何數(shù)據(jù)類型,包括字符串、整數(shù)和其它類型,如字典和列表 。甚至可以混在一起輸出,只需用逗號(hào)隔開。所有值都輸出到同一行,用空格隔開 (逗號(hào)并不打印出來(lái))。所以當(dāng)用 5 來(lái)調(diào)用 fib時(shí),將輸出“n = 5”。

(3) if 語(yǔ)句是一種的代碼塊。如果 if 表達(dá)式計(jì)算為 true,緊跟著的縮進(jìn)塊會(huì)被執(zhí)行,否則進(jìn)入 else 塊執(zhí)行。

(4) 當(dāng)然 if 和 else 塊可以包含許多行,只要它們都同樣縮進(jìn)。這個(gè) else 塊中有兩行代碼。對(duì)于多行代碼塊沒有其它特殊的語(yǔ)法,只要縮進(jìn)就行了。在經(jīng)過(guò)一些最初的抗議和幾個(gè)與 Fortran 的嘲諷的類比之后,您會(huì)心平氣和地
對(duì)待代碼縮進(jìn),并且開始看到它的好處。一個(gè)主要的好處就是所有的 Python程序看上去都差不多,因?yàn)榭s進(jìn)是一種語(yǔ)言的要求而不是一種風(fēng)格。這樣就使得閱讀和理解他人的 Python 代碼容易得多。

Note: Python vs. Java: 語(yǔ)句和語(yǔ)句分割

Python 使用硬回車來(lái)分割語(yǔ)句,冒號(hào)和縮進(jìn)來(lái)分割代碼塊。C++ 和 Java 使用分號(hào)來(lái)分割語(yǔ)句,花括號(hào)來(lái)分割代碼塊。

二、Python測(cè)試模塊

所有的 Python 模塊都是對(duì)象,并且有幾個(gè)有用的屬性。您可以使用這些屬性方便地測(cè)試您所編寫的模塊。下面是一個(gè)使用 if name 的技巧。

if name == "__main__":

在繼續(xù)學(xué)習(xí)新東西之前,有幾個(gè)重要的觀察結(jié)果。首先, if 表達(dá)式無(wú)需使用圓括號(hào)括起來(lái)。其次, if 語(yǔ)句以冒號(hào)結(jié)束,緊跟其后的是縮進(jìn)代碼。

Note: Python vs. C: 比較和賦值

與 C 一樣,Python 使用 == 做比較,使用 = 做賦值。與 C 不一樣,Python 不支持行內(nèi)賦值,所以不會(huì)出現(xiàn)想要進(jìn)行比較卻意外地出現(xiàn)賦值的情況。

那么為什么說(shuō)這個(gè)特殊的 if 語(yǔ)句是一個(gè)技巧呢?模塊是對(duì)象,并且所有的模塊都有一個(gè)內(nèi)置屬性 name 。一個(gè)模塊的 name 的值取決于您如何應(yīng)用模塊。如果 import 模塊,那么 name 的值通常為模塊的文件名,不帶路徑或者文件擴(kuò)展名。但是您也可以像一個(gè)標(biāo)準(zhǔn)的程序一樣直接運(yùn)行模塊,在這種情況下 name 的值將是一個(gè)特別的缺省值, main 。

>>> import odbchelper
>>> odbchelper.__name__
'odbchelper'

只要了解到這一點(diǎn),您就可以在模塊內(nèi)部為您的模塊設(shè)計(jì)一個(gè)測(cè)試套件,在其中加入這個(gè) if 語(yǔ)句。當(dāng)您直接運(yùn)行模塊, name 的值是 main ,所以測(cè)試套件執(zhí)行。當(dāng)您導(dǎo)入模塊, name 的值就是別的東西了,所以測(cè)試套件被忽略。這樣使得在將新的模塊集成到一個(gè)大程序之前開發(fā)和調(diào)試容易多了。

Tip: Mac OS 上的 if name __

在 MacPython 上,需要一個(gè)額外的步聚來(lái)使得 if name 技巧有效。點(diǎn)擊窗口右上角的黑色三角,彈出模塊的屬性菜單,確認(rèn) Run as main 被選中。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Python代碼縮進(jìn)和測(cè)試模塊的示例分析”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI