python筆記--自訂函數

來源:互聯網
上載者:User

標籤:python、函數

函數

函數是把一些負載的代碼封裝起來,需要的時候直接調用,重複利用提高效率並且能夠簡化程式的結構。

 

1.文法

定義一個函數要使用def語句,依次寫出函數名、括弧、括弧中的參數、冒號:,然後,在縮排塊中編寫函數體,函數的傳回值用return語句返回。

def functionName(parms1, parms2, ...):    code block    return expression

2.函數的定義與調用

#定義函數

>>> def func1():        print "aaa"        return "bbb"

注意:在Python互動環境中定義函數時,函數定義結束後需要按兩次斷行符號重新回到>>>提示符下。

 

#調用函數

>>> a=func1()aaa>>> print abbb

return作用:結束該語句塊,並返回一個值。如果沒有return語句或return後面為空白,函數執行完畢後也會返回結果,只是結果為None。

 

在linux環境下,我們把函數(如func())定義到一個.py檔案中了(如test.py),那麼,可以在該檔案的目前的目錄下啟動Python解譯器,用from test import func來匯入func()函數,注意test是檔案名稱(不含.py副檔名)。

 

3.空函數

如果想定義一個什麼事也不做的空函數,可以用pass語句:

>>>def func2():       pass

pass語句什麼都不做,那有什麼用?

實際上pass可以用來作為預留位置,比如現在還沒想好怎麼寫函數的代碼,就可以先放一個pass,讓代碼能運行起來。pass還可以用在其他語句裡,比如:

if age >= 18:    pass

缺少了pass,代碼運行就會有語法錯誤。

 

 

4.函數參數

>>> def func3(name,age):    #括弧中的叫形參        print (name,age)        return (name,age) >>> a=func3(‘fjc‘,25)        #括弧中的叫實參        (‘fjc‘, 25)

 

#參數檢測

一般情況一個形參只能對應一個實參,在調用函數時,如果參數個數不對,Python解譯器會自動檢查出來,並拋出TypeError錯誤。

但是有兩種形參可以對應多個實參,即可變參數和關鍵字參數,例如:

>>> def func4(*name):    #可變參數,有一個*        print(name)        >>> a=func4(‘zhangsan‘,‘lisi‘)(‘zhangsan‘, ‘lisi‘)     #輸出結果為一個元組  >>> def func5(**dic):    #關鍵字參數,有兩個*        print(dic)>>> a=func5(zhangsan=12,lisi=15)    #注意實參的格式{‘lisi‘: 15, ‘zhangsan‘: 12}        #輸出結果為一個字典

注意:可變參數和關鍵字參數同時出現時,可變參數在前,例如:

>>> def func6(*aa,**bb):        print aa        print bb        >>> func6(1,2,3,a=1,b=2,c=3)(1, 2, 3){‘a‘: 1, ‘c‘: 3, ‘b‘: 2

如果,需要將已經定義的列表或元組、字典使用函數調用,需要在列表或元組前加一個*,在字典前加兩個*,例如:

>>> lis=[1,2,3]>>> dic={‘a‘:1,‘b‘:2}>>> a=[1,2,3]>>> b={‘a‘:1,‘b‘:2,‘c‘:3}>>> def func7(*lis,**dic):        print (lis,dic)        >>> func7(*a,**b)    #a前加一個*,b前加兩個*((1, 2, 3), {‘a‘: 1, ‘c‘: 3, ‘b‘: 2})

 

#預設參數

>>> def func8(name,age=18):    #注意:預設參數只能放在形參的最後一個        print (name,age)>>> func8(‘zhangsan‘)(‘zhangsan‘, 18)

#在調用函數時,實參不按順序寫,例如:

>>> func8(age=25,name=‘fjc‘)    #使用“形參=實參”的方式(‘fjc‘, 25)

5.遞迴函式

在函數內部,可以調用其他函數。如果一個函數在內部調用自身本身,這個函數就是遞迴函式。例如:

#計算階乘

>>> def func9(n):        if n==1:        return n    return n*func9(n-1)    >>> func9(4)24

驗算的過程如下:

4*func9(3)==>

4*3*func9(2)==>

4*3*2*func9(1)==>

4*3*2*1

遞迴函式的優點是定義簡單,邏輯清晰。理論上,所有的遞迴函式都可以寫成迴圈的方式,但迴圈的邏輯不如遞迴清晰。

 

 

練習:

1. 斐波那契數列(Fibonacci sequence),又稱黃金分割數列,指的是這樣一個數列:0、1、1、2、3、5、8、13、21、34、……。

隨便輸入兩個數,產生類似的斐波那契數列。

#!/usr/bin/env pythondef func (*number):    lis=[first,second]    for i in range(10):        lis1=list(reversed(lis))        lest=lis1[0]+lis1[1]        lis.append(lest)    print(lis)first=input("please input the first number:")second=input("please input the second number:")a=func(first,second)

#這個簡單程式能夠實現:在互動式模式隨便輸入兩個數字,以這兩個數字為基,輸出斐波那契數列。

 

3. 輸出 9*9 乘法口訣表

#!/usr/bin/env pythondef func(n,m):    for x in range(1,10):        for y in range(1,x+1):            print "%d*%d=%d\t"%(x,y,x*y),        print ""func(1,10)

或者:

#!/usr/bin/env pythondef func(n,m):    for x in range(n,m):        for y in range(n,m):            if x>=y:    #設為x<=y,是另一種效果                print"%d*%d=%d\t"%(x,y,x*y),            else:                continue        print ""a=func(1,10)

5. 有四個數字:1、2、3、4,能組成多少個互不相同且無重複數位三位元?各是多少?

#!/usr/bin/env pythondef func(a,b,c,d):    f=0    for x in (a,b,c,d):        for y in (a,b,c,d):            for z in (a,b,c,d):                if x!=y and x!=z and z!=y:                    print "%d%d%d"%(x,y,z)                    f+=1    print "total:%d"%ffunc(1,2,3,4)

6. 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加),幾個數相加由鍵盤控制。

#!/usr/bin/env pythondef func(n,m):    x=[]    for i in range (1,m+1):         x.append(int("%d"%n*i))    print sum(x)n=input("number:")m=input("total:")func(n,m)

 


本文出自 “網路技術” 部落格,請務必保留此出處http://fengjicheng.blog.51cto.com/11891287/1927664

python筆記--自訂函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.