python函數簡介

來源:互聯網
上載者:User

標籤:python

這裡先解釋一下幾個概念
- 位置參數:按位置設定的參數,隱式用元組儲存對應形參.平時我們用的大多數是按位置傳參.比如有函數def func(a,b,c),調用func(1,2,3).即a=1,b=2,c=3
- 關鍵字參數:可以通過關鍵字設定參數,不用關心參數位置,隱式用字典儲存形參.比如有函數def func(a,b,c),調用func(b=1,c=2,a=3),即a=3,b=1,c=2

普通格式
def func(opt_args):    ...    return value
帶收集位置參數的函數
  • 格式如下
def func(*params):    ...    return value
  • 用法
    使用函數時,不用限制傳參的個數,*params會自動收集傳入的參數作為一個元組.

  • 執行個體

def  func(*params):    print paramsa = [1,2,3,4]b = ‘hello‘c = 3func(a, b, c)

輸出

([1, 2, 3, 4], ‘hello’, 3)

帶收集關鍵字參數的函數
  • 格式如下
def func(**params):    ...    return value
  • 用法
    按關鍵字傳參時,**params會自動收集傳入的參數作為一個字典.

  • 執行個體

def  func(**params):    print paramsfunc(a=1, b=2, c=3)

輸出

{‘a’: 1, ‘c’: 3, ‘b’: 2}

函數特殊用法預設參數
  • 格式

    def func(a = 1, b = 2)


等號(=)號是預設值,調用函數時可以不用傳參給預設參數.
  • 執行個體
def  func(a = 1, b = 2):    print a, b  func(a=3)

輸出

3 2

函數可以返回多個值

格式

return a, b, c

執行個體

def  func(a = 1, b = 2):    return a, bprint func(a=3)

輸出

(3, 2)

內嵌函數和閉包
  • 格式
def foo()    #外部函數    def bar()    #內嵌函數        ....    ....

如果內嵌函數引用了外部函數的變數(包括外部函數參數),這個引用的變數稱為自由變數, 那麼稱這個內嵌函數是閉包.再來看看專業的解釋:閉包(Closure)是詞法閉包(Lexical Closure)的簡稱,是引用了自由變數的函數。這個被引用的自由變數將和這個函數一同存在,即使已經離開了創造它的環境也不例外。

  • 執行個體
def foo(a, b):    x = 4    def bar():        return x * a + b;    return barf1= foo(1, 2)f2= foo(2, 3)print f1(), f2()

輸出

6 11

傳遞函數

Python一切皆對象,函數這一文法結構也是一個對象, 可以將函數名作為參數傳遞
格式

def bar(*param1, **param2):    ....def foo(bar, *param1, **param2):    bar(*param1, **param2)
  • 執行個體
def bar(*param1, **param2):    print param1    print param2def foo(bar, *param1, **param2):    bar(*param1, **param2)foo(bar,  1, 2, 3,  a = 111, b = 222, c = 333)

輸出

(1, 2, 3)
{‘a’: 111, ‘c’: 333, ‘b’: 222}

匿名函數與lambda

lambda文法可以建立一個匿名的函數,主要作用是簡化書寫,是一種文法糖.
- 格式

lambda [arg1[, arg2, … argN]] : expression

  • 執行個體
def foo(x, y):    return x + yprint  "call foo function, result is: ", foo(3, 4)bar = lambda x = 2, y = 3 : x + yprint  "call lambda fucntion, result is:", bar(3,4)

輸出

call foo function, result is: 7
call lambda fucntion, result is: 7

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.