亚洲熟女综合色一区二区三区,亚洲精品中文字幕无码蜜桃,亚洲va欧美va日韩va成人网,亚洲av无码国产一区二区三区,亚洲精品无码久久久久久久

零基礎(chǔ)Python教程-函數(shù)及模塊的使用


今天和大家分享一下零基礎(chǔ)Python教程中的-函數(shù)及模塊的運(yùn)用,在學(xué)習(xí)本節(jié)內(nèi)容之前,我們先來(lái)一起做道數(shù)學(xué)題。已知:半徑分別為0.1、0.2、0.3的三個(gè)圓,分別求這三個(gè)圓的面積。很多讀者可能要笑一下,這不是小學(xué)的數(shù)學(xué)問(wèn)題嗎?

?函數(shù)

 
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ǔ)句,依次寫(xiě)出函數(shù)名、括號(hào)、括號(hào)中的參數(shù)和冒號(hào),然后,在縮進(jìn)塊中編寫(xiě)函數(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)

很多編程語(yǔ)言都支持函數(shù),但是Python對(duì)函數(shù)處理與其他編程語(yǔ)言有一個(gè)顯著的區(qū)別就是:Python支持函數(shù)的參數(shù)設(shè)有默認(rèn)值。

例如:我們寫(xiě)一個(gè)計(jì)算x*x的函數(shù)。

def power(x): 
return x * x

當(dāng)我們調(diào)用power函數(shù)時(shí),必須傳入有且僅有的一個(gè)參數(shù)x。

那么問(wèn)題來(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)镻ython沒(méi)有函數(shù)重載的概念,那么我們?cè)谝粋€(gè).py文件中命名了兩個(gè)同名函數(shù)應(yīng)該怎么辦呢?例如:

def test():
print("Good")
def test():
print("Bad")test()

我們?nèi)绾谓鉀Q這種問(wèn)題呢?Python引入了模塊的概念。我們可以將這兩個(gè)函數(shù)分別寫(xiě)到不同的文件中,通過(guò)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中編寫(xiě)了執(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)行之后的代碼。

好了,今天的分享到這里就結(jié)束了,希望大家可以持續(xù)關(guān)注馬哥教育官網(wǎng),每天都會(huì)有大量?jī)?yōu)質(zhì)的文章與大家分享歐!免責(zé)聲明:內(nèi)容和圖片源自網(wǎng)絡(luò),版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請(qǐng)告知,我們將盡快刪除相關(guān)內(nèi)容。

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國(guó)內(nèi)好評(píng)如潮的Linux云計(jì)算運(yùn)維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開(kāi)發(fā)專業(yè)人才培訓(xùn)機(jī)構(gòu)!