Python學習筆記 函式

2021-07-11 20:11:06 字數 3963 閱讀 4886

1.基本呼叫

python 中的函式使用關鍵字  def 來建立乙個函式,正如其他語言中的函式一樣,有函式名,引數,以及返回值。

函式的引數不用指定型別,return 可以在任何地方出現,表示函式結束,如果沒有返回內容則預設返回值為none。

乙個簡單的無引數,無返回值的hello world

>>> def hello():

print('hello world')

>>> hello()

hello world

有返回值的

>>> def fun():

return 111

>>> fun()

111

有引數有返回值的

>>> def fun(a,b,c):

d = a+b+c

return d

>>> fun(1,2,3)

6

python中的函式返回值

看起來可以是多個物件

>>> def fun():

return 'aaa','bbb','ccc'

>>> fun()

('aaa', 'bbb', 'ccc')

>>> x,y,z = fun()

>>> x

'aaa'

>>> y

'bbb'

>>> z

'ccc'

>>> x,y,z

('aaa', 'bbb', 'ccc')

這裡函式返回的值看起來像是三個字串,但本質是乙個元組而已,所以其實返回的還只是乙個物件。

2.預設引數

函式可以有預設引數,預設引數必須從右到左填寫,因為引數是從左往右傳入的,若預設引數後面還有引數的話呼叫時會出現歧義。

若定義引數,但沒有傳入引數的話會出現異常。

>>> def fun(a,b,c=1):

return a,b,c

>>> def fun(a,b,c):

return a,b,c

>>> fun()

traceback (most recent call last):

file "", line 1, in fun()

typeerror: fun() missing 3 required positional arguments: 'a', 'b', and 'c'

但是定義預設引數的話,若無引數傳入的話會呼叫預設引數值,若傳入引數的話會根據傳入的引數值來操作。

>>> def fun(a=1,b=1,c=1):

return a,b,c

>>> fun()#預設引數值為1

(1, 1, 1)

>>> fun(2,3,4)#使用傳入的引數值

(2, 3, 4)

若預設引數後面還有引數的話就會出現異常。

>>> def fun(a=1,b,c):

return a,b,c

syntaxerror: non-default argument follows default argument

所以預設引數只能在引數列表中從右到左出現。

>>> def fun(a,b,c=1):

return a,b,c

>>> fun(1,2,3)

(1, 2, 3)

3.關鍵字傳入引數

python可以根據關鍵字來傳入引數,而不用很死板的只能從左到右一對一的傳入。

>>> def fun(a,b,c):

return a,b,c

>>> fun(1,2,3)#全部預設從左到右傳入引數

(1, 2, 3)

>>> fun(b=1,c=3,a=2)#全部根據關鍵字傳入引數

(2, 1, 3)

>>> fun(1,c=2,b=3)#混合使用

(1, 3, 2)

4.函式的定義及使用

python中的函式允許先使用在定義,這與c++ 不同,c++必須先定義後才能使用,否則會報錯。

>>> def a():

print('a')

b()#先使用

>>> def b():#再定義

print('b')

>>> a()ab

>>> b()

b

但是若是使用b函式,而在下面不去定義b函式的話也會報錯的。

5.可變長度的引數

(1).非關鍵字可變長引數(元組)

在有可變長引數(元組)的情況下,在傳入相應的引數後,剩下的所有引數按順序插入到乙個元組中,非關鍵字可變長引數用*表示。

>>> def fun(a,b,c,*d):

print(a,b,c,d)

>>> fun(1,2,3)

1 2 3 ()

>>> fun(1,2,3,4,5,6,7,8,9)#傳入的作為元組的一部分輸出

1 2 3 (4, 5, 6, 7, 8, 9)

(2).關鍵字變數引數(字典)

關鍵字變數引數就是可以將字典的鍵值作為引數進行傳入,插入到乙個字典中最後輸出,用**表示。

>>> def fun(a,b,c,**d):

print(a,b,c,d)

>>> fun(1,2,3)

1 2 3 {}

>>> fun(1,2,3,x=4,y=5,z=6)

1 2 3 #字典是無序的

當然兩種格式也可以混合使用

>>> def fun(a,b,c,*d,**e):

print(a,b,c,d,e)

>>> fun(1,2,3)

1 2 3 () {}

>>> fun(1,2,3,4,5,6,x=7,y=8,z=9)

1 2 3 (4, 5, 6)

6.lambda

用lambda關鍵字建立匿名函式,匿名是因為不需要用標準的方式來宣告,比如用def,然而,作為函式,它們也可以有引數。

乙個完整的lambda』語句『代表了乙個表示式,這個表示式的定義體必須和宣告放在同一行。

格式:lambda 引數 : 返回內容

>>> a = lambda :print("hello world")

>>> a()#無引數的

hello world

>>> a = lambda x,y=3:x+y#有引數,乙個引數為預設引數

>>> a(1)

4>>> a(4,5)

9

7.遞迴

遞迴求階乘

>>> def fun(n):#遞迴求階乘

if n==0 or n==1:

return 1

else:

return n*fun(n-1)

>>> fun(3)

6>>> fun(4)

24

fibonacci數列

>>> def fun(n):

if n==0 or n==1:

return 1

else:

return fun(n-1)+fun(n-2)

>>> for i in range(10):

print('%d' % fun(i))11

2358

1321

3455

python學習筆記 函式

def fun object,param1,param2 none print type object tuple,呼叫時預設的所有實參全部轉化為tuple傳遞給object fun 1,2,3,4,5,6,7,param1 8 指定param1的呼叫實參,param2引數呼叫預設值函式內可訪問全域...

python學習筆記 函式

建立函式 def myfirstfuntion 函式具體內容 呼叫函式 直接輸入函式面名及引數。def myfirstfnuncyion syntaxerror invalid syntax def myfirstfunction print 我愛你,qt syntaxerror eol while...

python學習筆記(函式)

函式的使用遵循先定義後使用原則,只定義函式是不會被執行的,函式只有在被呼叫之後才會執行 python中的定義函式的格式 def my one myone myone 內容1 my one 函式的引數和返回值 形參 形式引數 沒有具體值,只有佔位符 實參 實際引數 呼叫函式時輸入的值 返回值 函式執行...