Python基礎05 函式與lambda表示式

2021-09-28 23:36:37 字數 2354 閱讀 1834

函式是組織好的,可重複使用的,用來實現單一,或相關聯功能的**段。

(1)定義乙個函式

定義函式的規則:

語法:

def functionname( parameters ):

"函式_文件字串"

function_suite

return [expression]

例項(呼叫):
def sum(x,y):

z=x+y

return z

print("sum(2,5)=",sum(2,5)) #sum(2,5)= 7

(2)引數傳遞

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

可更改(mutable)與不可更改(immutable)物件

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

不可變型別:變數賦值 a=5 後再賦值 a=10,則原來的5被丟棄,生成乙個新的int 物件a=10,而不是改變a的值

可變型別:變數賦值 la=[1,2,3,4] 後再賦值 la[2]=5 則是將 list la 的第三個元素值更改,本身la沒有動,只是其內部的一部分值被修改了。沒有生成新的物件,而是la的內部數值實實在在被修改!

python 函式的引數傳遞:

不可變型別:類似 c++ 的值傳遞,如 整數、字串、元組。如fun(a),傳遞的只是a的值,沒有影響a物件本身。比如在 fun(a)內部修改 a 的值,只是修改另乙個複製的物件,不會影響 a 本身。

可變型別:類似 c++ 的引用傳遞,如 列表,字典。如 fun(la),則是將 la 真正的傳過去,修改後fun外部的la也會受影響

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

傳不可變例項:

def changeint( a ):

a = 10

print(a) #10 (函式內部產生乙個新的b,b=10)

b = 2

changeint(b)

print (b) # 2 (b本身)

傳可變例項:

def changeme( mylist ):    

print ("函式內取值: ", mylist) # 函式內取值: [10, 20, 30, [1, 2, 3, 4]]

return # mylist列表本身被修改

mylist = [10,20,30];

changeme( mylist ); #呼叫changeme函式

print ("函式外取值: ", mylist) #函式外取值: [10, 20, 30, [1, 2, 3, 4]]

不定長引數

乙個函式能處理比當初宣告時更多的引數,這些引數叫做不定長引數。

加了星號(*)的變數名會存放所有未命名的變數引數。不定長引數例項如下:

def printinfo( arg1, *vartuple ):

print ("輸出: ")

print (arg1) # 列印任何傳入的引數

for var in vartuple:

print (var)

return;

printinfo( 10 ); # 呼叫printinfo 函式

printinfo( 70, 60, 50 );

輸出: 10

輸出: 70

60 50

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

1.lambda只是乙個表示式,函式體比def簡單很多。

2.lambda的主體是乙個表示式,而不是乙個**塊。僅僅能在lambda表示式中封裝有限的邏輯進去。

3.lambda函式擁有自己的命名空間,且不能訪問自有引數列表之外或全域性命名空間裡的引數。

4.雖然lambda函式看起來只能寫一行,卻不等同於c或c++的內聯函式,後者的目的是呼叫小函式時不占用棧記憶體從而增加執行效率。

語法lambda函式的語法只包含乙個語句,如下:

lambda [arg1 [,arg2,.....argn]]:expression
例項:
sum=lambda x,y,z:(x+y)*z

print(sum(1,2,3)) #9

Python基礎 05 函式與Lambda表示式

匿名函式lambda表示式 定義函式 呼叫函式 有必須引數 關鍵字引數 不定長引數 引數型別 必須引數 呼叫時引數數量型別必須和宣告時一樣 defprintme str 列印任何傳入的字串 print str printme str 如果此處不加引數的話會報錯 關鍵字引數 呼叫時引數順序可以與宣告時...

Python基礎語法05 函式模組

函式是組織好的,可重複使用的,用來實現單一,或相關聯功能的 段。函式能提高應用的模組性,和 的重複利用率。你已經知道python提供了許多內建函式,比如print 但你也可以自己建立函式,這被叫做使用者自定義函式。你可以定義乙個由自己想要功能的函式,以下是簡單的規則 任何傳入引數和自變數必須放在圓括...

Python基礎語法05 函式模組

函式是組織好的,可重複使用的,用來實現單一,或相關聯功能的 段。函式能提高應用的模組性,和 的重複利用率。你已經知道python提供了許多內建函式,比如print 但你也可以自己建立函式,這被叫做使用者自定義函式。你可以定義乙個由自己想要功能的函式,以下是簡單的規則 任何傳入引數和自變數必須放在圓括...