乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       印度阿三17 2019-02-14

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

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

      2、命名空間

      • “存放名字與值的關(guān)系”的空間
      • 內(nèi)置命名空間
        存放的是python解釋器提供的名字(input,print,str...),拿過來就可以使用,內(nèi)置命名空間的名字在解釋器啟動的時候就被放入內(nèi)存
      • 全局命名空間
        當前模塊的命名空間
        當代碼執(zhí)行的時候,從上到下按執(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 = 1
      b = 2
      def func():
          global a
          a = 6      #合法
          b = 4       #不合法操作

      5、函數(shù)嵌套

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

      6、nonlocal

      在嵌套的函數(shù)中,如果我們要修改上層函數(shù)的變量,通過上面global是做不到的,因為global獲取的是全局中的那個變量,所以可以通過nonlocal來獲?。ㄖ荒塬@取最接近的那層,也就是上一層中的變量)
      
      a = 1
      def 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 = func
      func2()    #實際上執(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__將返回cell
      def 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 inner
      out = outer()
      out()
      out()

      9、三目運算符

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

       

      來源:http://www./content-1-114301.html

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多