代碼塊

代碼塊

  1. 代碼塊的定義

    1. 所有的代碼都依賴於代碼塊進行執行,代碼塊可以是一個文件、函數、類等
    2. 交互式命令下一行就是一個代碼塊
  2. 代碼塊的緩存機制

    1. 同一代碼塊下的緩存機制
      1. 前提條件:代碼在同一個代碼塊內
      2. 機制內容:Python在執行初始化對象的時候,回檢查之前有沒有初始化過這個變量,如果有就指向這個內存。
      3. 適用的對象:int、bool、str
      4. 具體細則:所有的數字、bool、幾乎所有的數字
      5. 優點
        1. 節省內存
        2. 提升效率
    2. 不同代碼塊下的緩存機制(小內存池)
      1. 前提條件:代碼在不同代碼塊內
      2. 機制內容:Python在執行初始化對象的時候,回檢查之前有沒有初始化過這個變量,如果有就指向這個內存。
      3. 適用的對象:int、bool、str
      4. 具體細則:-5~256的數字、bool、有規則的字符串(經過測試,好像對中文有歧義)
      5. 優點
        1. 節省內存
        2. 提升效率
  3. 同一個代碼塊實例

    1. 數字

      i = 100
      i1 = 100
      print(id(i))
      print(id(i1))
      # 輸出
      4562324240
      4562324240
      
    2. bool

      b1 = True
      b2 = True
      print(id(b1))
      print(id(b2))
      # 輸出
      4314780784
      4314780784
      
    3. 字符串

      s1 = "無敵"
      s2 = "無敵"
      print(id(s1))
      print(id(s2))
      # 輸出
      4317723528
      4317723528
      
    4. 函數

      def sum(n):
          return n * n
      
      def sum1(n):
          return n * n
      
      print(id(sum(10)))
      print(id(sum1(10)))
      # 結果
      4511357712
      4511357712
      
    5. 
      
  4. 不同代碼塊的實例

    1. 數字

      >>> i = 100
      >>> i1 = 100
      >>> print(id(i))
      4530920208
      >>> print(id(i1))
      4530920208
      
      >>> i = 800
      >>> i1 = 800
      >>> print(id(i))
      4533004816
      >>> print(id(i1))
      4533556208
      
    2. bool

      >>> b1 = True
      >>> b2 = True
      >>> print(id(b1))
      4530513008
      >>> print(id(b2))
      4530513008
      
    3. 字符串

      >>> s1 = "aaaa"
      >>> s2 = "aaaa"
      >>> print(id(s1))
      4533563264
      >>> print(id(s2))
      4533563264
      
      # 經過測試,好像對中文有歧義
      
Tags: