国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python中函數的多種格式和使用實例及小技巧

2019-11-25 17:46:16
字體:
來源:轉載
供稿:網友

這里先解釋一下幾個概念
- 位置參數:按位置設置的參數,隱式用元組保存對應形參.平時我們用的大多數是按位置傳參.比如有函數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 params

a = [1,2,3,4]
b = 'hello'
c = 3
func(a, b, c)

輸出

復制代碼 代碼如下:

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

帶收集關鍵字參數的函數

格式如下

復制代碼 代碼如下:

def func(**params):
    ...
    return value

用法
按關鍵字傳參時,**params會自動收集傳入的參數作為一個字典.

實例

復制代碼 代碼如下:

def  func(**params):
    print params
func(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, b

print 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 bar

f1= 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 param2

def 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 + y
print  "call foo function, result is: ", foo(3, 4)

bar = lambda x = 2, y = 3 : x + y
print  "call lambda fucntion, result is:", bar(3,4)


輸出
復制代碼 代碼如下:

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 禄劝| 新沂市| 新河县| 新余市| 广南县| 新安县| 博爱县| 唐海县| 长寿区| 义马市| 开鲁县| 湖南省| 渝中区| 卫辉市| 宁都县| 龙游县| 霞浦县| 乐陵市| 罗甸县| 梁山县| 东明县| 阿拉善盟| 安乡县| 手游| 改则县| 临颍县| 镇原县| 巢湖市| 三穗县| 时尚| 平度市| 宁晋县| 郓城县| 大邑县| 都兰县| 彩票| 美姑县| 沛县| 清水县| 班玛县| 内乡县|