Python 學習筆記(第4課)

來源:互聯網
上載者:User

標籤:

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

1.定義函數

Python中定義函數用關鍵字def,如下例所示,testFun為函數名

def testFun():

       print "hello world"

2.函數參數

一個函數可以有0個或多個形式參數:

def testAdd(x,y):

       print x+y

函數的形式參數值可以初始化,使用了初始值的參數,在調用的時候可以不需要指定該參數。

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

       print x+y+z

調用函數:

testSum(3) #   將列印出:4

testSum(10,y=1) # 將列印出:12

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

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

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

 

3.函數傳回值

Python函數可以通過return語句返回函數值,如果沒有return語句或者return語句後什麼都沒有,函數將返回:None

 def testSub(x,y):

        return x-y

調用函數:

 x=testSub(10,2)
print x   #將列印出:8

4.字典和元組形式的函數參數

Python函數的形式參數個數有時候不確定,這時候,我們可以使用*args或**args的形式參數。*args以元組的形式接收參數,而**args以字典的形式接收參數,當兩者都存在時,定義函數時,*args必須定義在**args前面

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

def testDict(a,**b):

       print ‘a is:‘,a

       print ‘b is:‘,b

調用函數方法一:

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

調用函數方法二:

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

輸出結果:

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

元組形參(*args)例子:

def testTuple(a,*b):

       print ‘a is :‘ ,a

       print b

調用函數方法一:

tup=(‘a‘,1,2,‘b‘)
testTuple(1,*tup)

調用函數方法二:

testTuple(1,‘a‘,1,2,‘b‘)

輸出結果:

>>>

a is : 1

(‘a‘, 1, 2, ‘b‘)

5.匿名函數

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

def testLambda(x):

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

函數調用:

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

6.要點記錄

當多次調用一個具有初始化參數的函數時,該參數只會在第一次調用時被初始化一次。 這使得當形式參數為可變對象,如:列表、字典或者類的執行個體時,其結果可能和我們預期的不一樣:

def testParam(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)、類的執行個體

Python 學習筆記(第4課)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.