开心六月综合激情婷婷|欧美精品成人动漫二区|国产中文字幕综合色|亚洲人在线成视频

    1. 
      
        <b id="zqfy3"><legend id="zqfy3"><fieldset id="zqfy3"></fieldset></legend></b>
          <ul id="zqfy3"></ul>
          <blockquote id="zqfy3"><strong id="zqfy3"><dfn id="zqfy3"></dfn></strong></blockquote>
          <blockquote id="zqfy3"><legend id="zqfy3"></legend></blockquote>
          打開APP
          userphoto
          未登錄

          開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

          開通VIP
          python基礎(chǔ)7(函數(shù) Ⅱ)

          1、python代碼運(yùn)行遇到函數(shù)時(shí)

          從python解釋器開始執(zhí)行之后,就在內(nèi)存中開辟了一個(gè)空間每當(dāng)遇到一個(gè)變量的時(shí)候,就把變量名和值之間的對應(yīng)關(guān)系記錄下來。但是當(dāng)遇到函數(shù)定義的時(shí)候解釋器只是象征性的將函數(shù)名讀入內(nèi)存,表示知道這個(gè)函數(shù)的存在了,至于函數(shù)內(nèi)部的變量和邏輯解釋器根本不關(guān)心。等執(zhí)行到函數(shù)調(diào)用的時(shí)候,python解釋器會(huì)再開辟一塊內(nèi)存來存儲這個(gè)函數(shù)里的內(nèi)容,這個(gè)時(shí)候,才關(guān)注函數(shù)里面有哪些變量,而函數(shù)中的變量會(huì)存儲在新開辟出來的內(nèi)存中。函數(shù)中的變量只能在函數(shù)的內(nèi)部使用,并且會(huì)隨著函數(shù)執(zhí)行完畢,這塊內(nèi)存中的所有內(nèi)容也會(huì)被清空。

          2、命名空間

          • “存放名字與值的關(guān)系”的空間
          • 內(nèi)置命名空間
            存放的是python解釋器提供的名字(input,print,str...),拿過來就可以使用,內(nèi)置命名空間的名字在解釋器啟動(dòng)的時(shí)候就被放入內(nèi)存
          • 全局命名空間
            當(dāng)前模塊的命名空間當(dāng)代碼執(zhí)行的時(shí)候,從上到下按執(zhí)行的過程加載到內(nèi)存
          • 局部命名空間
            函數(shù)內(nèi)部定義的名字隨函數(shù)調(diào)用而創(chuàng)建,隨函數(shù)結(jié)束而刪除
          • 命名空間的加載順序
            內(nèi)置命名空間 -> 全局命名空間 -> 局部命名空間
          • 命名空間的取值順序
            局部命名空間 -> 全局命名空間 -> 內(nèi)置命名空間

          3、作用域

          全局作用域:內(nèi)置命名空間和全局命名空間中的名字都屬于全局作用域局部作用域:函數(shù)(局部命名空間中的名字屬于局部作用域)#查看局部作用域中的名字locals()#查看全局作用域中的名字globals()

          4、global

          對于不可變數(shù)據(jù)類型,局部中可以獲得其值,但是不能修改如果要修改,可以通過global關(guān)鍵字a = 1b = 2def func():    global a    a = 6      #合法    b = 4       #不合法操作

          5、函數(shù)嵌套

          def outer():    def inner():        print('---')    inner()outer()

          6、nonlocal

          在嵌套的函數(shù)中,如果我們要修改上層函數(shù)的變量,通過上面global是做不到的,因?yàn)間lobal獲取的是全局中的那個(gè)變量,所以可以通過nonlocal來獲?。ㄖ荒塬@取最接近的那層,也就是上一層中的變量)a = 1def outer1():    a = 2    def outer2():        a = 3        def inner():            nonlocal a            a = 5        inner()    outer2()outer1()#outer2中的a = 3將變成a = 5

          7、函數(shù)名的本質(zhì)是內(nèi)存地址,可以作為容器元素,返回值,參數(shù)

          #函數(shù)名可以賦值def func():    print('I am func')func2 = funcfunc2()    #實(shí)際上執(zhí)行的是func#函數(shù)名可以作為容器的元素l = [func,fun2]for f in l:    f()#函數(shù)名可以作為返回值def ohyeah(f):    f()    return f

          8、閉包

          閉包就是內(nèi)層函數(shù)調(diào)用外層函數(shù)的變量def outer():    a = 1    def inner():        print(a)#如果是閉包,調(diào)用__closure__將返回celldef outer():    a = 1    def inner():        print(a)    print(inner.__closure__)outer()#閉包的用法就是在函數(shù)外部使用其內(nèi)部的函數(shù)。#可以使外部函數(shù)的變量無需重復(fù)創(chuàng)建def outer():    a = 1    def inner():        print(a)    return innerout = outer()out()out()

          9、三目運(yùn)算符

          def max(a,b):    return a if a>b else b

           

          來源:http://www.icode9.com/content-1-114301.html
          本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
          打開APP,閱讀全文并永久保存 查看更多類似文章
          猜你喜歡
          類似文章
          12步輕松搞定python裝飾器
          【Python之路】特別篇
          12個(gè)步驟教你理解Python裝飾器
          變量作用域
          淺談Python命名空間和作用域
          Python 基礎(chǔ)(十八):命名空間 & 作用域
          更多類似文章 >>
          生活服務(wù)
          分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
          綁定賬號成功
          后續(xù)可登錄賬號暢享VIP特權(quán)!
          如果VIP功能使用有故障,
          可點(diǎn)擊這里聯(lián)系客服!

          聯(lián)系客服