真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python之函數(shù)詳解

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Python之函數(shù)詳解

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

一、函數(shù)的概述

? ? ?簡單地說,函數(shù)就是個黑匣子,它接收輸入(參數(shù)),然后執(zhí)行特定任務(wù)以完成特定功能,最后生成輸出(返回值)。其中,輸入(參數(shù))和輸出(返回值)都是可選的,也就是說,可以有也可以沒有函數(shù)就是執(zhí)行特定任務(wù)以完成特定功能的一段代碼。可以在程序中將某段代碼定義成函數(shù),并指定函數(shù)名及接收的輸入(參數(shù)),這樣,就可以在程序的其它地方通過函數(shù)名多次調(diào)用并執(zhí)行該段代碼了每次調(diào)用并執(zhí)行后,都會根據(jù)接收的輸入(參數(shù))執(zhí)行特定任務(wù)以完成特定功能從而生成相應(yīng)的輸出(返回值)Python語言已經(jīng)定義了很多內(nèi)置函數(shù)。我們可以在程序中通過函數(shù)名直接調(diào)用這些內(nèi)置函數(shù)。例如:當我們調(diào)用內(nèi)置函數(shù)id()時,輸入(參數(shù))是任意的對象,完成的特定功能是獲取輸入(參數(shù))的唯一標識,輸出(返回值)是輸入(參數(shù))的唯一標識。

二、為什么需要函數(shù)

1.復用代碼? 如果在程序中需要多次完成某個特定的功能,我們無需把這個特定功能的相關(guān)代碼在多個地方編寫多次,完全可以把這個特定功能的相關(guān)代碼定義成函數(shù),然后在多個地方調(diào)用該函數(shù),每次調(diào)用都會把函數(shù)對應(yīng)的相關(guān)代碼執(zhí)行一遍。

2.隱藏實現(xiàn)細節(jié)? 函數(shù)就是個黑匣子,將實現(xiàn)細節(jié)隱藏起來了。很多時候我們無需關(guān)注函數(shù)的實現(xiàn)細節(jié),只需關(guān)注其接收的輸入(參數(shù))及生成的輸出(返回值)就可以了。

3.提高可維護性? 把完成某段特定功能的代碼定義為函數(shù)后,如果需要對這段代碼進行修改,只需要在一個地方進行修改,提高了程序的可維護性。否則,你需要找到這段代碼的多個不同地方,每個地方都要進行同樣的修改,費事費力還容易出錯。

4.提高可讀性、便于調(diào)試每個函數(shù)都對應(yīng)一段完成特定功能的代碼,提高了程序的可讀性,也便于程序調(diào)試。

三、函數(shù)的定義和調(diào)用

1、定義函數(shù)定義

函數(shù)的語法格式

def 函數(shù)名([形式參數(shù)1,形式參數(shù)2,形式參數(shù)n]):

? ? 函數(shù)體

其中,def是 Python定義的關(guān)鍵字。

關(guān)于函數(shù)名的說明

a) 每個函數(shù)都有一個函數(shù)名,用于函數(shù)的調(diào)用。

b) 函數(shù)名屬于標識符,因此,必須遵守標識符的命名規(guī)則,推薦遵守標識符的命名規(guī)范。

關(guān)于形式參數(shù)的說明

a)?形式參數(shù)簡稱形參

b) 形參用于在調(diào)用函數(shù)時接收輸入,也就是接收傳遞的實際參數(shù)(簡稱實參)

c) 形參用中括號括起來,表示形參時可選的,也就是說,可以定義也可以不定義。

d) 形參的本質(zhì)是變量,其作用域(起作用的范圍)僅限于函數(shù)體

關(guān)于函數(shù)體的說明

a) 函數(shù)體是用于執(zhí)行特定任務(wù)以完成特定功能的主體代碼

b) 函數(shù)體對應(yīng)的代碼塊必須縮進。

c) 如果函數(shù)需要有輸出(返回值),可以在函數(shù)體內(nèi)通過語句 return xxx進行返回,同時結(jié)束函數(shù)體的執(zhí)行。

如果函數(shù)不需要有輸出(返回值),可以在函數(shù)體內(nèi)通過語句 return直接結(jié)束函數(shù)體的執(zhí)行,或者讓函數(shù)體正常執(zhí)行結(jié)束,其實,函數(shù)在這兩種情況下都是有返回值的,其返回值都是None。

d) 函數(shù)體在調(diào)用函數(shù)時才會被執(zhí)行,因此,定義函數(shù)不會改變程序的執(zhí)行流程。

2、函數(shù)調(diào)用

調(diào)用函數(shù)時,每個實參都被用于初始化相應(yīng)的形參。所有形參都被初始化之后,函數(shù)體對應(yīng)的代碼塊被執(zhí)行。程序的執(zhí)行流會跳轉(zhuǎn)到定義函數(shù)的函數(shù)體內(nèi),執(zhí)行函數(shù)體對應(yīng)的代碼塊,執(zhí)行完函數(shù)體后再跳回到調(diào)用函數(shù)的地方,繼續(xù)執(zhí)行下一條語句。

def?test(arg1,arg2):
????if?arg1?and?arg2:
????????return?arg1?and?arg2
????elif?arg1?or?arg2:
????????return?arg1?or?arg2
????else:
????????return?False
????????
print(test('hi',1))?#?1
print(test(1,[]))?#?1
print(test('',[]))?#?False

四、函數(shù)調(diào)用之位置實參

調(diào)用函數(shù)時,可以根據(jù)每個形參在所有形參中的位置傳遞對應(yīng)位置的實參,從而用每個實參初始化對應(yīng)位置的形參,這樣的實參稱為位置實參。

def?test1(arg1,arg2,arg3):
????print('a?=?',?arg1,?'b?=?',?arg2,?'c?=',?arg3)
#?實參位置不同是,初始化的形參值也不同,返回的值也會有變化
test1(1,2,3)?#?a?=??1?b?=??2?c?=?3
test1(3,2,1)?#?a?=??3?b?=??2?c?=?1

五、函數(shù)調(diào)用之關(guān)鍵字實參

調(diào)用函數(shù)時,傳遞的實參的形式可以為: 形參名=實參值,從而用指定的實參值初始化指定名稱的形參這樣的實參稱為關(guān)鍵字實參。

def?test2(a,b,c):
????print('a?=?',?a,?'b?=?',?b,?'c?=?',?c)
#?調(diào)用函數(shù)時,可以指定實參值初始化指定名稱的形參
test2(a?=?1,?b?=?2,?c?=?3)?#?a?=??1?b?=??2?c?=??3
test2(a?=?3,?b?=?1,?c?=?2)?#?a?=??3?b?=??1?c?=??2


六、函數(shù)調(diào)用之實參傳遞

對于傳遞不可變類型的實參和可變類型的實參,傳入可變類型的實參值會受到函數(shù)體內(nèi)運算的影響。不可變類型的實參則不受影響。

def?test3(arg1,arg2):
????arg1?*?10
????arg2.append(4)
????print(arg1,arg2)
i?=?10
L?=?[1,2,3]
test3(i,L)?#?10?[1,?2,?3,?4]

print('i的值',?i,?'L的值',?L)?#?i的值?10?L的值?[1,?2,?3,?4]

七、函數(shù)的定義之多個返回值

如果需要在調(diào)用函數(shù)后有多個返回值,可以在定義函數(shù)時在函數(shù)體內(nèi)使用 return語句返回由多個返回值組成的元組。

def?test4(arg1):
????even?=?[]
????odd?=?[]
????for?i?in?arg1:
????????if?i?%?2:
????????????even.append(i)
????????else:
???????????odd.append(i)
????#?return?定義返回兩個列表的值
????return?even,odd
L?=?list(range(1,11))

print(test4(L))?#?([1,?3,?5,?7,?9],?[2,?4,?6,?8,?10])

八、函數(shù)定定義之帶默認值的形參

定義函數(shù)時,可以給形參設(shè)置默認值,這樣,調(diào)用函數(shù)時如果不傳遞對應(yīng)的實參,就會使用設(shè)置的默認值初始化形參。給形參設(shè)置默認值的語法格式為: 形參=默認值 給形參設(shè)置默認值之后,可以簡化函數(shù)的調(diào)用,只有與默認值不符的形參才需要傳遞額外的實參。

def?test5(a,b?=?5):
????print('a?=?',?a,?'b?=?',?b)
????
test5(10)?#?a?=??10?b?=??5?未傳入b的實參,使用默認值b?=?5

九、函數(shù)定義之使用*定義關(guān)鍵字形參

定義函數(shù)時,可以在所有形參的某個位置添加一個*,這樣,*后面的所有形參都被定義為只能接收關(guān)鍵字實參的關(guān)鍵字形參。

def?test6(a,b,*,c,d):
????print('a?=?',?a,?'b?=?',?b,?'c?=?',?c,?'d?=?',?d)
#?調(diào)用函數(shù)時,必須傳入c?=?xx?d?=?xx的關(guān)鍵字參數(shù)
test6(1,2,c?=?3,d?=?4)?#?a?=??1?b?=??2?c?=??3?d?=??4
#test6(1,2,3,4)??test6()?takes?2?positional?arguments?but?4?were?given

十、函數(shù)定義之使用*定義個數(shù)可變的位置形參

定義函數(shù)時,可能無法事先確定傳遞的位置實參的個數(shù),在這種情況下,可以在形參前添加一個*,將形參定義為個數(shù)可變的位置形參,從而可以接收0個或任意多個位置實參。這些位置實參會將個數(shù)可變的位置形參初始化為一個元組。

def?test7(arg1,*arg2):
????print('arg1?=?',?arg1,?'*arg2?=?',?arg2)
????
#?傳入實參時可以傳入多個參數(shù),arg1接收第一個參數(shù),*arg2接收剩余的參數(shù)
test7(1,2,3,4)?#?arg1?=??1?*arg2?=??(2,?3,?4)

十一、函數(shù)調(diào)用之使用*將序列中的每個元素轉(zhuǎn)換為位置實參

調(diào)用函數(shù)時,可以在序列前面添加一個*,從而將序列中的每個元素都轉(zhuǎn)換為一個單獨的位置實參。

def?test8(a,b,c):
????print('a?=?',?a,?'b?=?',?b,?'c?=?',?c)
????
L?=?[1,2,3]
#?正常調(diào)用,需要依次傳遞L的索引作為實參,然后初始化形參
test8(L[0],L[1],L[2])?#?a?=??1?b?=??2?c?=??3
#?調(diào)用時使用*,將序列中的每一個元素轉(zhuǎn)換成單獨的位置實參
test8(*L)?#?a?=??1?b?=??2?c?=??3

十二、函數(shù)定義之使用**定義個數(shù)可變的關(guān)鍵字形參

定義函數(shù)時,可能無法事先確定傳遞的關(guān)鍵字實參的個數(shù),在這種情況下,可以在形參前添加兩個*將形參定義為個數(shù)可變的關(guān)鍵字形參,從而可以接收0個或任意多個關(guān)鍵字實參。這些關(guān)鍵字實參會將個數(shù)可變的關(guān)鍵字形參初始化為一個字典。

def?test9(**kwargs):
????print(kwargs)
????
#傳入多個關(guān)鍵字實參,初始華**kwargs,以字典的形式返回值
test9(a?=?1,?b?=?2,?c?=?3)?#?{'a':?1,?'b':?2,?'c':?3}

#?因為位置形參必須要在關(guān)鍵字形參之前,所以個數(shù)可變的位置參數(shù)必須在個數(shù)可變的關(guān)鍵字參數(shù)之前
def?test10(*args,**kwargs):
????print(args,kwargs)

test10(1,2,3,a?=?11,?b?=?12)?#?(1,?2,?3)?{'a':?11,?'b':?12}

十三、函數(shù)調(diào)用值使用**將字典的每個鍵值對都轉(zhuǎn)換為關(guān)鍵字參數(shù)

調(diào)用函數(shù)時,可以在字典前添加兩個**,從而將字典中的每個鍵值對都轉(zhuǎn)換為一個單獨的關(guān)鍵字實參。

def?test11(a,b,c):
????print('a?=?',a,?'b?=?',?b,?'c?=?',?c)
????
d?=?{'a':1,'b':2,'c':3}
test11(**d)?#?a?=??1?b?=??2?c?=??3

當前標題:Python之函數(shù)詳解
文章路徑:http://weahome.cn/article/pdpsgd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部