教小白如何使用Python函數(shù)及模塊?
今天小編要跟大家分享的文章是教小白如何使用Python函數(shù)及模塊?熟悉Python的小伙伴們都知道很多編程語(yǔ)言都支持函數(shù),但是Python對(duì)函數(shù)處理與其他編程語(yǔ)言有一個(gè)顯著的區(qū)別就是:Python支持函數(shù)的參數(shù)設(shè)有默認(rèn)值。 Python入門新手和正在Python學(xué)習(xí)的小伙伴快來(lái)看一看吧,希望能夠?qū)Υ蠹矣兴鶐椭?!

函數(shù)
在學(xué)習(xí)本節(jié)內(nèi)容之前,我們先來(lái)一起做道數(shù)學(xué)題。
已知:半徑分別為0.1、0.2、0.3的三個(gè)圓,分別求這三個(gè)圓的面積。
很多讀者可能要笑一下,這不是小學(xué)的數(shù)學(xué)問題嗎?
S = π * r * r # 那么 S1 = π * 0.1 * 0.1 S1 = π * 0.2 * 0.2 S1 = π * 0.3 * 0.3
在上面的表達(dá)式中,我們做了3次求圓的面積,這樣的代碼實(shí)際上就是重復(fù)代碼。
對(duì)于上面的表達(dá)式,我們可以將面積公式封裝到函數(shù)中。在需要計(jì)算面積的時(shí)候,調(diào)用函數(shù)即可。
在Python中可以使用def關(guān)鍵字來(lái)定義函數(shù),和變量一樣每個(gè)函數(shù)也有一個(gè)名字,而且命名規(guī)則跟變量的命名規(guī)則是一致的。
在Python中,定義一個(gè)函數(shù)要使用def語(yǔ)句,依次寫出函數(shù)名、括號(hào)、括號(hào)中的參數(shù)和冒號(hào),然后,在縮進(jìn)塊中編寫函數(shù)體,函數(shù)的返回值用return語(yǔ)句返回。
在了解函數(shù)的定義及作用之后,我們對(duì)上述代碼進(jìn)行重構(gòu)。重構(gòu)就是在不影響代碼執(zhí)行結(jié)果的前提下對(duì)代碼的結(jié)構(gòu)進(jìn)行調(diào)整。
def circle_area(r): S = 3.14 * r * r print('%.4f' %S) circle_area(0.1) circle_area(0.2) circle_area(0.3)
Python對(duì)函數(shù)處理與其他編程語(yǔ)言有一個(gè)顯著的區(qū)別就是:Python支持函數(shù)的參數(shù)設(shè)有默認(rèn)值。
例如:我們寫一個(gè)計(jì)算x*x的函數(shù)。
def power(x): return x * x
當(dāng)我們調(diào)用power函數(shù)時(shí),必須傳入有且僅有的一個(gè)參數(shù)x。
那么問題來(lái)了,如果我們要計(jì)算x*x*x怎么辦?你可能會(huì)說(shuō)我們?cè)俣x一個(gè)新的函數(shù)計(jì)算。那要是需要計(jì)算x*x*x*x又該怎么辦呢?我們不能無(wú)限的定義新函數(shù)。
這個(gè)時(shí)候,相信聰明的你已經(jīng)想到了。我們可以將power(x)重新定義為power(x,n)。用來(lái)計(jì)算x的n次方。
def power(x, n): s = 1 while n > 0: = n - 1 s = s * x return s power(2,5)
這樣我們就可以計(jì)算任意n次方。
但是此時(shí)我們調(diào)用舊函數(shù)就會(huì)報(bào)錯(cuò),原因是我們?cè)黾恿艘粋€(gè)參數(shù),導(dǎo)致舊的代碼因?yàn)槿鄙僖粋€(gè)參數(shù)而無(wú)法正常調(diào)用:
這個(gè)時(shí)候,Python的默認(rèn)參數(shù)就派上用場(chǎng)了。
def power(x, n=2): s = 1 while n > 0: = n - 1 s = s * x return s
這樣,當(dāng)我們調(diào)用power(5)時(shí),相當(dāng)于調(diào)用power(5, 2)。
注意:
一是必選參數(shù)在前,默認(rèn)參數(shù)在后,否則Python的解釋器會(huì)報(bào)錯(cuò)(思考一下為什么默認(rèn)參數(shù)不能放在必選參數(shù)前面)
二是如何設(shè)置默認(rèn)參數(shù)。
當(dāng)函數(shù)有多個(gè)參數(shù)時(shí),把變化大的參數(shù)放前面,變化小的參數(shù)放后面。變化小的參數(shù)就可以作為默認(rèn)參數(shù)。
使用默認(rèn)參數(shù)有什么好處?最大的好處是能降低調(diào)用函數(shù)的難度。
模塊
相信很多朋友在給函數(shù)、變量命名時(shí)都非常糾結(jié)。至少我本人是這樣的。因?yàn)?strong>Python沒有函數(shù)重載的概念,那么我們?cè)谝粋€(gè).py文件中命名了兩個(gè)同名函數(shù)應(yīng)該怎么辦呢?例如:
def test(): print("Good") def test(): print("Bad")test()
我們?nèi)绾谓鉀Q這種問題呢?Python引入了模塊的概念。我們可以將這兩個(gè)函數(shù)分別寫到不同的文件中,通過import關(guān)鍵字進(jìn)行導(dǎo)入從而引用。
# good.py def test(): print("Good") # bad.py def test(): print("Bad")
當(dāng)我們想要使用test()函數(shù)時(shí),可以如下:
from good import test # 輸出Good test() #輸出Bad from bad import test test()
但是,下面這種情況,程序會(huì)調(diào)用最后一個(gè)模塊的函數(shù):
from good import test
from bad import test
test()
需要說(shuō)明的是,如果我們導(dǎo)入的模塊除了定義函數(shù)之外還中有可以執(zhí)行代碼,那么Python解釋器在導(dǎo)入這個(gè)模塊時(shí)就會(huì)執(zhí)行這些代碼,事實(shí)上我們可能并不希望如此,因此如果我們?cè)谀K中編寫了執(zhí)行代碼,最好是將這些執(zhí)行代碼放入如下所示的條件中,這樣的話除非直接運(yùn)行該模塊,if條件下的這些代碼是不會(huì)執(zhí)行的,因?yàn)橹挥兄苯訄?zhí)行的模塊的名字才是“\_\_main\_\_”。
通俗的理解就是:當(dāng)你的腳本文件是被直接運(yùn)行的時(shí)候,則if__name__=='__main__'后的可執(zhí)行代碼就會(huì)執(zhí)行,如果你的代碼是被導(dǎo)入的,那么就不會(huì)直接運(yùn)行之后的代碼。
以上就是馬哥教育今天為大家分享的關(guān)于教小白如何使用Python函數(shù)及模塊的文章,希望本篇文章能夠?qū)φ?Python學(xué)習(xí)?和從事Python相關(guān)工作的小伙伴們有所幫助,想要了解更多相關(guān)知識(shí)記得關(guān)注馬哥教育官網(wǎng)。最后祝愿小伙伴們工作順利!
聲明:文章來(lái)源于網(wǎng)絡(luò),侵刪!