Python函式入門和使用

2021-10-16 21:29:50 字數 4184 閱讀 1641

函式是帶名字的**塊,用於完成具體的工作。要執行函式定義的特定任務,可呼叫該函式。需要在程式中多次執行同一項任務時,

你無需反覆編寫完成該任務的**,而只需呼叫執行該任務的函式,讓python執行其中的**。

1、定義函式

(1)定義乙個函式具有以下的規則:

任何傳入引數和自變數必須放在圓括號中間,圓括號之間可以用於定義引數。

函式的第一行語句可以選擇性地使用文件字串—用於存放函式說明。

函式內容以冒號 : 起始,並且縮排。

return [表示式]結束函式,選擇性地返回乙個值給呼叫方,不帶表示式的 return 相當於返回 none。

下面是乙個簡單的使用案例:

def greet_user():

"""顯示簡單的問候語"""

print("hello!")

greet_user()

(2)實參和形參以下是乙個測試用例:

def sum_num(a, b):

return a + b

print(sum_num(1, 2))

在上述程式中,變數a, b均為形參,是定義在sum_num中的區域性變數,1和2是實參,實參是呼叫函式時傳遞給函式的資訊。

當我們呼叫函式sum_num時,傳遞了1和2,相當於執行了a = 1, b = 2,此時a儲存的值為1,b中儲存的值為2。

2、傳遞實參

鑑於函式定義中可能包含多個形參,因此函式呼叫中也可能包含多個實參。向函式傳遞實參的方式很多,可使用位置實參,

這要求實參的順序與形參的順序相同;也可使用關鍵字實參,其中每個實參都由變數名和值組成;還可使用列表和字典。

(1)位置實參

呼叫函式時,python必須將函式呼叫中的每個實參都關聯到函式定義中的乙個形參。為此,最簡單的關聯方式是基於實參的順序。這種關聯方式被稱為位置實參。

def sum_num(a, b):

print(a)

print(b)

return a + b

print(sum_num(1, 2))

在上述**中,當我們在呼叫函式時,傳入1和2,被呼叫函式會直接按照引數的順序,將1賦給a,2賦給b。如果傳入引數為2和1,則按照順序,a中的值為2,b中的值為1。

(2)關鍵字實參

關鍵字實參是傳遞給函式的名稱---值對。直接在實參中將名稱和值關聯起來了,因此向函式傳遞實參時不會混淆。

關鍵字實參讓你無需考慮函式呼叫中的實參順序,還清楚地指出了函式呼叫中各個值的用途。

def sum_num(a, b):

print(a)

print(b)

return a + b

print(sum_num(a=1, b=2))

print(sum_num(b=2, a=1))

在實參中,我們直接使a = 1, b = 2,不管順序如何,現在已經將具體的值和形參關聯了,所以可以得到相同的結果。

(3)預設值

編寫函式時,可給每個形參指定預設值。在呼叫函式中給形參提供了實參時,python將使用指定的實參值;否則,將使用形參的預設值。因此,

給形參指定預設值後,可在函式呼叫中省略相應的實參。使用預設值可簡化函式呼叫,還可清楚地指出函式的典型用法。

注意使用預設值時,在形參列表中必須先列出沒有預設值的形參,再列出有預設值的實參。這讓python依然能夠正確地解讀位置實參。

def sum_num(a, b=2):

print(a)

print(b)

return a + b

print(sum_num(1))

在上述**中我們呼叫函式時,只傳入了1,這時1會自動匹配沒有預設值的1,然後b使用預設值2。

(4)不定長引數

你可能需要乙個函式能處理比當初宣告時更多的引數。這些引數叫做不定長引數,和上述3 種引數不同,宣告時不會命名。

def printinfo( arg1, *vartuple ):

"列印任何傳入的引數"

print ("輸出: ")

print (arg1)

print (vartuple)

# 呼叫printinfo 函式

printinfo( 70, 60, 50 )

如果在函式呼叫時沒有指定引數,它就是乙個空元組。我們也可以不向函式傳遞未命名的變數。如下例項:

def printinfo( arg1, *vartuple ):

"列印任何傳入的引數"

print ("輸出: ")

print (arg1)

for var in vartuple:

print (var)

return

# 呼叫printinfo 函式

printinfo( 10 )

printinfo( 70, 60, 50 )

還有一種就是引數帶兩個星號 **,加了兩個星號 ** 的引數會以字典的形式匯入。

def printinfo( arg1, **vardict ):

"列印任何傳入的引數"

print ("輸出: ")

print (arg1)

print (vardict)

# 呼叫printinfo 函式

printinfo(1, a=2,b=3)

(5)傳遞可變物件和不可變物件

在 python 中,型別屬於物件,變數是沒有型別的:

a=[1,2,3]

a="runoob"

上**中,[1,2,3]是 list 型別,"runoob"是 string 型別,而變數 a 是沒有型別,她僅僅是乙個物件的引用(乙個指標),可以是指向 list 型別物件,也可以是指向 string 型別物件。

在 python 中,strings, tuples, 和 numbers 是不可更改的物件,而 list,dict 等則是可以修改的物件。

python 函式的引數傳遞:

python 中一切都是物件,嚴格意義我們不能說值傳遞還是引用傳遞,我們應該說傳不可變物件和傳可變物件。

3、返回值

函式並非總是直接顯示輸出,相反,它可以處理一些資料, 並返回乙個或一組值。 函式返回的值被稱為返回值。在函式中,可使用return語句將值返回到呼叫函式的**行。

返回值讓你能夠將程式的大部分繁重工作移到函式中去完成,從而簡化主程式。

(1)返回簡單值

def sum_num(a, b):

return a + b

print(sum_num(1, 2))

(2)返回字典和列表

函式可返回任何型別的值,包括列表和字典等較複雜的資料結構

def sum_num(a, b):

ls = [a, b]

return ls

print(sum_num(1, 2))

4、匿名函式

python 使用 lambda 來建立匿名函式。

所謂匿名,意即不再使用 def 語句這樣標準的形式定義乙個函式。

sum = lambda arg1, arg2: arg1 + arg2

# 呼叫sum函式

print ("相加後的值為 : ", sum( 10, 20 ))

print ("相加後的值為 : ", sum( 20, 20 ))

python函式入門和使用

什麼是函式 函式就是過程 在python中函式定義過程 def 函式名 括號中可寫引數,也可不寫 函式本體 return 返回值 可寫可不寫,根據具體情況 函式分類 是否存在返回值 有返回值的函式 可以通過return關鍵字返回所定義返回值,也可將函式本身定義為返回值,便可實 現迴圈效果,直到遇到返...

python函式入門和使用

使用return關鍵字返回結果 函式遇到return關鍵字,則立刻返回引數的個數,根據情況任意 引數的型別,是任意型別由官方定義的函式 print input type需要安裝這些模組,才能使用 pip install 模組名稱 pip python install package 我們寫的函式 注...

python函式入門和使用

函式 這裡所的 函式 並不是我們接觸的數學上的函式 函式是最基本的一種 抽象的方式,是組織好的可重複使用的,用來實現單一或相關聯功能的 段。函式是對做相似的事情或相似的動作進行封裝,它能提高應用的模組性和 的重複利用率。我們要封裝好乙個函式,首先要學會對事務進行抽象,抽象是數學中非常常見的概念。舉個...