<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 概述 變量的生效范圍(由其**所在位置**決定)稱為作用域,又稱**名稱空間**(可見范圍),python創建,查找變量名都是在名稱空間中進行的。 函數定義了本地作用域,模塊定義了全局作用域,此處的**全局作用域僅限于單個程序文件**。 變量的作用域越小,優先級越高,遵循LEGB法則 ## LEGB作用域查找原則 本地變量 --> 上層函數的作用域 --> 全局作用域 --> 內置作用域 ![](http://om4h63cja.bkt.clouddn.com/17-3-7/11113944-file_1488869174700_e428.jpg) >[success]global在修改全局作用域時使用,nolocal(python3)在修改上層函數作用域時使用 >[danger]全局作用域中的變量,在函數中默認只讀,不能修改,修改應使用如下方法 在本地作用域中改變全局變量方法 ```python def f(): global x x = X ``` ## return * 結束函數 * 返回某個對象,返回多個對象時會封裝成元組 * 默認返回None ## 最小化全局變量 在函數內部盡量避免修改全局變量。 python使用**多線程**進行并行計算實際上使用的全局變量,全局變量在并行線程中在不同函數之間成為了共享內存,扮演了**通訊工具**的角色。 ## 最小化文件間的修改 ```python # first.py X = 99 #second.py import first print(first.X) # 打印結果 first.X = 88 # 修改first.py結果 ``` 應避免上面這樣的做法。**解決辦法**:通過調用函數進行通信 ### 例子 ```python #first.py #!/usr/bin/env python X = 99 def setX(new): global X X = new # 修改全局變量 #second.py #!/usr/bin/env python import first print(first.X) first.setX(88) print(first.X) # 展示全局變量 #three.py #!/usr/bin/env python import first import second print(first.X) ``` 測試結果 ```python python three.py 99 88 88 ``` 其他訪問全局變量的方法 ```python # m.py 模塊名 var = 99 def local(): var = 0 def glob1(): global var var += 1 def glob2(): import m m.var += 1 def glob3(): import sys glob = sys.modules['m'] glob.var += 1 def test(): print(var) # local()不影響全局變 local();glob1();glob2();glob3(); print(var) ``` 測試結果 ```python >>> m.test() 99 102 >>> m.var 102 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看