python3----函數、匿名函數

本節將學習如何用Python定義函數,調用函數,以及學習匿名函數的使用python

1.定義函數app

Python中定義函數用關鍵字def,以下例所示,func爲函數名函數

def func():學習

       print( "hello world")對象

 

2.函數參數字符串

一個函數能夠有0個或多個形式參數:string

def test_add(x, y):io

       print (x + y)table

函數的形式參數值能夠初始化,使用了初始值的參數,在調用的時候能夠不須要指定該參數。test

def test_sum(z, x = 1, y = 0):

       print(x + y + z)

調用函數:

test_sum(3) #   將打印出:4

test_sum(10, y = 1) # 將打印出:12

test_sum(y = 1, x = 2, z = 10) #將打印出:13

注意:定義函數時,沒有初始化的形式參數必須放在初始化形式參數的前面,不然會報錯

        調用函數時,必須指定未初始化的參數,且參數的順序要與函數定義的參數順序一致(除非調用時指定了參數名)

 

3.函數返回值

Python函數能夠經過return語句返回函數值,若是沒有return語句或者return語句後什麼都沒有,函數將返回:None

字典形參(**args)例子:

def test_dict(a,**b):

       print('a is:',a)

       print( 'b is:',b)

調用函數方法一:

tict={'x':1, 'y':2,'z':3}
test_dict(10, **tict)

調用函數方法二:

test_dict(10,x=1,y=2,z=3)

輸出結果:

>>>
a is: 10
b is: {'y': 2, 'x': 1, 'z': 3}

元組形參(*args)例子:

def test_tuple(a,*b):

       print( 'a is :' ,a)

       print( b)

調用函數方法一:

tup = ('a', 1, 2, 'b')
test_tuple(1, *tup)

調用函數方法二:

test_tuple(1, 'a', 1, 2, 'b')

輸出結果:

>>>

a is : 1

('a', 1, 2, 'b')

5.匿名函數

Python能夠用關鍵字lambda定義一個匿名函數,當須要一個函數類型的對象時,能夠建立一個匿名函數來實現

def test_lambda(x):

       return lambda x:x+y     #這裏將返回一個函數對象

函數調用:

f=test_lambda(10)  #建立了一個函數對象:f
print( f(5) )       #將會打印出:15

6.要點記錄

當屢次調用一個具備初始化參數的函數時,該參數只會在第一次調用時被初始化一次。 這使得當形式參數爲可變對象,如:列表、字典或者類的實例時,其結果可能和咱們預期的不同:

def test_param(x=[]):

      x.append(10)

      print(x)

屢次調用函數(可能咱們但願調用函數的結果是:都打印出列表[10]):

testParam()
testParam()
testParam()
testParam()

實際輸出結果:

>>>
[10]
[10, 10]
[10, 10, 10]
[10, 10, 10, 10]

當形式參數爲不可變對象時,又是怎樣的狀況呢?咱們再觀察另外一個例子:

def testParam(x = 2):

       x=x + 2

       print(x)

調用函數:

testParam()
testParam()
testParam()
testParam()

實際輸出結果:

>>>
4
4
4
4

 

備註:

python中,萬物皆對象。

python中不存在所謂的傳值調用,一切傳遞的都是對象的引用,也能夠認爲是傳址。

不可變對象(immutable):int、字符串(string)、float、(數值型number)、元組(tuple)

可變對象(mutable):字典型(dictionary)、列表型(list)、類的實例

相關文章
相關標籤/搜索