python基礎-函數

來源:互聯網
上載者:User

標籤:代碼   具名引數   number   可變參數   lang   print   分享   重用   表達   

函數介紹

如果在開發程式時,需要某塊代碼多次,但是為了提高編寫的效率以及代碼的重用,所以把具有獨立功能的代碼塊組織為一個小模組,這就是函數

 

函數定義和調用

定義函數的格式如下:

def 函數名():        代碼

 

demo:

  # 定義一個函數,能夠完成列印資訊的功能    def printInfo():        print ‘------------------------------------‘        print ‘         生命苦短,我用Python‘        print ‘-------------------
 函數參數<1> 定義帶有參數的函數

樣本如下:

   def add2num(a, b):        c = a+b        print c

 

<2> 調用帶有參數的函數

以調用上面的add2num(a, b)函數為例:

 def add2num(a, b):        c = a+b        print c    add2num(11, 22) #調用帶有參數的函數時,需要在小括弧中,傳遞資料

 

調用帶有參數函數的運行過程:

 

 

 

 

<3>. 預設參數

調用函數時,預設參數的值如果沒有傳入,則被認為是預設值。下例會列印預設的age,如果age沒有被傳入:

def printinfo( name, age = 35 ):

# 列印任何傳入的字串
print ("Name:", name)
print ("Age", age)

# 調用printinfo函數
printinfo(name="miki" )
printinfo( age=9,name="miki" )

 

以上執行個體輸出結果:

Name:  mikiAge  35Name:  mikiAge  9
注意:帶有預設值的參數一定要位於參數列表的最後面。

 

 

<4>.不定長參數

 

有時可能需要一個函數能處理比當初聲明時更多的參數。這些參數叫做不定長參數,聲明時不會命名。

 

基本文法如下:

 

def functionname([formal_args,] *args, **kwargs):       "函數_文檔字串"       function_suite       return [expression]

 

 

加了星號(*)的變數args會存放所有未命名的變數參數,args為元組;而加**的變數kwargs會存放具名引數,即形如key=value的參數, kwargs為字典。

def fun(a, b, *args, **kwargs):    """可變參數示範樣本"""    print ("a =", a)    print ("b =", b)    print ("args =", args)    print ("kwargs: ")    for key, value in kwargs.items():        print (key, "=", value)fun(1, 2, 3, 4, 5, m=6, n=7, p=8)  # 注意傳遞的參數對應
遞迴函式

如果一個函數在內部不調用其它的函數,而是自己本身的話,這個函數就是遞迴函式。

舉個例子,我們來計算階乘 n! = 1 * 2 * 3 * ... * n

解決辦法1:

 

看階乘的規律

1! = 12! = 2 × 1 = 2 × 1!3! = 3 × 2 × 1 = 3 × 2!4! = 4 × 3 × 2 × 1 = 4 × 3!...n! = n × (n-1)!

解決辦法2:

 

原理:

 

 

匿名函數

用lambda關鍵詞能建立小型匿名函數。這種函數得名於省略了用def聲明函數的標準步驟。

lambda函數的文法只包含一個語句,如下:

    lambda [arg1 [,arg2,.....argn]]:expression

如下執行個體:

 sum = lambda arg1, arg2: arg1 + arg2    #調用sum函數  print "Value of total : ", sum( 10, 20 )  print "Value of total : ", sum( 20, 20 )

 

以上執行個體輸出結果:

    Value of total :  30    Value of total :  40

 

Lambda函數能接收任何數量的參數但只能返回一個運算式的值

匿名函數不能直接調用print,因為lambda需要一個運算式

 

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.