Python回顧與整理9:函數和函數式編程

來源:互聯網
上載者:User

標籤:函數   python   函數式編程   

0.說明


        無論在什麼程式設計語言中,函數都不可或缺,充分利用函數的特性,可以大大減少我們程式中的代碼量。



1.什麼是函數


        所謂函數,英文名為function,其實就是表示為實現一定功能的一段代碼,顯然,如果需要多次實現某一功能時,使用函數就是把重複代碼放入其中,既節省空間的,又有助於保持一致性(主要是修改代碼時)。


(1)函數vs過程

        兩者都是可以被調用的實體,過程是簡單、沒有傳回值、特殊的函數。在Python中,過程就是函數,因為解譯器會隱匿地返回預設值None。


(2)傳回值與函數類型

        在C語言中,如果定義的一個函數沒有傳回值,則預設返回`void`,並且同時還要在定義函數時聲明函數的類型(即傳回值為void的函數類型)。

        在Python中,並不需要定義函數的傳回值類型,函數可以返回不同類型的值,而如果沒有傳回值,則預設返回None:

>>> def hello():...     print ‘hello world!‘... >>> res = hello()hello world!>>> res>>> print resNone>>> type(res)<type ‘NoneType‘>

        另外需要注意的是,跟C語言一樣,Python也只能返回一個值或對象,但也許你會看到下面這樣的情況:

>>> def foo():...     return ‘xpleaf‘, ‘clyyh‘... >>> res = foo()

        執行沒有報錯,似乎真的可以返回多個對象!但其實,它真的返回了一個對象:

>>> res(‘xpleaf‘, ‘clyyh‘)>>> type(res)<type ‘tuple‘>

        即在上面的函數中,其實是隱式地返回了一個元組,只是看起來像是返回了多個對象而已。顯然,Python的這種特性要比C語言的靈活很多。關於傳回值數量,可總結如下:

返回的對象的數目 Python實際返回的對象
0 None
1 object
>1 tuple



2.調用函數


(1)函數操作符

        其實就是使用圓括弧來調用一個函數。


(2)關鍵字參數

        指的是在調用函數時,可以通過給指定參數傳值,而不需要按照原來函數定義參數的順序來傳值。

        定義如下一個函數:

def net_conn(host, port):    net_conn_suite

        可以有如下調用方式:

  • 標準調用(非關鍵字參數調用)

# 給參數傳遞值時,必須按照原來參數定義的順序傳遞值net_conn(‘www.xpleaf.com‘, 80)
  • 關鍵字參數調用

# 按照順序給參數傳遞值net_conn(host=‘www.xpleaf.com‘, port=80 )# 不按照順序給參數傳遞值net_conn(port=80, host=‘www.xpleaf.com‘)


(3)預設參數

        預設參數就是聲明了預設值的參數,因為給參數賦予了預設值,所以在調用函數時,不向該參數傳入值也是允許的,後面會有討論。


(4)參數組

        通過一個把元組(非關鍵字參數)或字典(關鍵字參數)作為參數部分傳遞給函數,可以在Python中執行一個沒有顯式定義參數的函數。如下:

func(*tuple_grp_nonkw_args, **dict_trp_kw_args)

        當然也可以給出其它形參,包括標準的位置參數(既不是預設參數也不是關鍵字參數,即按照函數定義時參數的位置來給相應的參數傳遞值)和關鍵字參數(函數調用時指定給哪一個參數傳遞值,其實就是所謂關鍵字參數了),函數調用的完整文法如下:

func(positional_args, keyword_args, *tuple_grp_nonkw_args, **dict_grp_kw_args)







本文出自 “香飄葉子” 部落格,轉載請與作者聯絡!

Python回顧與整理9:函數和函數式編程

聯繫我們

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