當前位置:成語大全網 - 新華字典 - python中函數的作用

python中函數的作用

Python 函數定義以及參數傳遞

1.函數定義

#形如def func(args...):

doSomething123

以關鍵字def 開頭,後面是函數名和參數下面是函數處理過程。

舉例:

def add( a, b ):

return a+b12

參數可以設定默認值,如:

def add( a, b=10 ): #註意:默認值參數只會運算壹次

return a+b12

默認值參數只會運算壹次是什麽意思?

def func( a, b=[] ): #b的默認值指向壹個空的列表,每次不帶默認值都會指向這塊內存

b.append(a) return b

print(func(1))#向默認的空列表裏加入元素1 ,默認列表裏已經是[1]print(func(2))#向默認的列表裏加入元素2,默認列表裏已經是[1,2]print(func(3,[]))#向b指向的空列表裏加入元素1 ,默認列表裏還是[1,2]print(func(4))#向默認的列表裏加入元素4,默認列表裏已經是[1,2,4]'''

結果:

[1]

[1, 2]

[3]

[1, 2, 4]

'''12345678910111213141516

這下明白為什麽默認參數只計算壹次了吧,函數參數不傳遞時默認值總是指向固定的內存空間,就是第壹次計算的空間。

2.參數傳遞

def func(a, b):

print('a=%d, b=%d' % (a,b) )12

在使用函數時可以如下方式,結果都是相同的

func(10,20) #不使用參數名,需要按參數順序傳遞func(a=10,b=20) #使用參數名可以不按順序傳遞func(b=20,a=10)#結果:a=10, b=20a=10, b=20a=10, b=201234567

如果函數定義形式如下方式:

def func(*args): #這種定義會把傳遞的參數包成元組

print(args,type(args))

func(10,20)#結果:#(10, 20) <class 'tuple'>1234567

舉壹個和上述過程相反的例子:

def func(a,b):

print('a=%d, b=%d' % (a,b) )

a = (10, 20)

func(*a) #在調用函數使用`*`則會把元組解包成單個變量按順序傳入函數#結果:a=10, b=20123456

總結:*號在定義函數參數時,傳入函數的參數會轉換成元組,如果 *號在調用時則會把元組解包成單個元素。

另壹種定義:

def func(**kw):#使用**定義參數會把傳入參數包裝成字典dict

print(kw, type(kw) )

func(a=10,b=20)#這種函數在使用時必須指定參數值,使用key=value這種形式#結果:{'b': 20, 'a': 10} <class 'dict'>12345

相反的例子:

def func(a,b):

print('a=%d, b=%d' % (a,b) )

d = {'a':10, 'b':20 }

func(**d) #在調用時使用**會把字典解包成變量傳入函數。12345

def func(*args, **kw):#這種形式的定義代表可以接受任意類型的參數

print(args,kw )12

總結:**號在定義函數參數時,傳入函數的參數會轉換成字典,如果 **號在調用時則會把字典解包成單個元素。

lambda表達式

lambda表達式就是壹種簡單的函數

形如 f = lambda 參數1,參數2: 返回的計算值

例如:

add = lambda x,y: x+y

print(add(1,2))'''

結果:3

'''12345