python之路--day10-閉包函數

來源:互聯網
上載者:User

標籤:分類   函數對象   函數嵌套   while   認證   包含   key   檔案的   pre   

1.命名關鍵字參數

  格式:在*後面的參數都是命名關鍵字參數

  特點:

    1.必須被傳值

    2.約束函數的調用者必須按照key=value的形式傳值

    3.約束函數的調用者必須用我們指定的key名

 1 def auth(*args,**kwargs): 2     """ 3     使用方式auth(name="egon",pwd="123") 4     :param args: 5     :param kwargs: 6     :return: 7     """ 8     # print(args,kwargs) 9     if len(args) !=0:10         print(‘必須用關鍵字的形式傳參‘)11         return12     if ‘name‘ not in kwargs:13         print(‘必須用指定的key名name‘)14         return15     if ‘pwd‘ not in kwargs:16         print(‘必須用指定的key名pwd‘)17         return18 19     name=kwargs[‘name‘]20     pwd=kwargs[‘pwd‘]21     print(name,pwd)

2.函數嵌套

  1.函數的嵌套調用:在函數內又調用了其他函數

  

def max(x,y):    if x>y:        reryrn x    else:        return ydef max3(x,y,z):    res1 = max2(x,y)    res2 = max2(rea1,z)    return res2print(max3(11,199,2))

  2,函數的嵌套定義:在函數內又定義了其他函數

def func1():    print(‘from func1‘)    def func2(): #func2=記憶體位址         print(‘from func2‘)func1()

 

def f1():    print(‘f1‘)    def f2():        print(‘f2‘)        def f3():            print(‘f3‘)        f3()    f2()f1()‘‘‘f1f2f3‘‘‘

 

 

3.名稱空間和範圍

  1.名稱空間:存放名字和值綁定關係的地方

  1.2.名稱空間分類: 

    1.2.1內建名稱空間:存放python解譯器內建的名字,在解譯器啟動時就生效,解譯器關閉則失效

    1.2.2全域名稱空間:檔案層級的名字,在執行檔案的時候生效,在檔案結束或者在檔案刪除的時候失效

    1.2.3局部名稱空間:存放函數內定義的名字(函數的參數以及函數內名字都存放在局部變數空間)---在函數調用時臨時生效,函數結束則失效

      載入順序:內建名稱空間-----全域名稱空間---局部名稱空間

      尋找名字:局部名稱空間-----全域名稱空間-----內建名稱空間

 

  2:範圍

  1.全域變數域:包含的是內建名稱空間與全域名稱空間的名字

  特點:

      在任何位置都能訪問到

      該範圍內的名字會伴隨程式整個生命週期

  2.局部範圍:包含的是局部名稱空間的名字

   特點:

       只能在函數內使用

      調用函數是生效,調用結束失效

 

4,函數對象

  1,函數可以被引用

def bar():    print(‘from bar‘)f =barf()

  2,可以當作參數傳入

 

def bar():        print(’from bar‘)def wrapper(func):        func()wrapper(bar)

  3,可以當作函數的傳回值

def bar():    print(’from bar‘)def foo(func):    return funcf = foo(bar)f()

  4,可以當作容器類型的元素

def get():     print(‘from get‘)def put():     print(‘from put‘)l=[get,put]print(l)l[0]()
def auth():    print(‘登陸。。。。。‘)def reigster():    print(‘註冊。。。。。‘)def search():    print(‘查看。。。。‘)def transfer():    print(‘轉賬。。。。‘)def pay():    print(‘支付。。。。‘)dic={    ‘1‘:auth,    ‘2‘:reigster,    ‘3‘:search,    ‘4‘:transfer,    ‘5‘:pay}def interactive():    while True:        print("""        1 認證        2 註冊        3 查看        4 轉賬        5 支付        """)        choice=input(‘>>: ‘).strip()        if choice in dic:            dic[choice]()        else:            print(‘非法操作‘)interactive()

 

5,閉包函數

  定義在函數內部的函數,並且該函數包含對外部函數範圍中名字的引用,該函數就成為閉包函數

 def outter():     name=‘egon‘     def inner():         print(‘my name is %s‘ %name)     return inner

inner()被稱為閉包函數。
inner()定義在函數outter外部,outter函數的範圍內部變數name,在inner內被引用

 

python之路--day10-閉包函數

相關文章

聯繫我們

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