<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                所謂作用域(Scope),就是變量的有效范圍,就是變量可以在哪個范圍以內使用。有些變量可以在整段代碼的任意位置使用,有些變量只能在函數內部使用,有些變量只能在 for 循環內部使用。 變量的作用域由變量的定義位置決定,在不同位置定義的變量,它的作用域是不一樣的。本節我們只講解兩種變量,局部變量和全局變量。 ## Python局部變量 在函數內部定義的變量,它的作用域也僅限于函數內部,出了函數就不能使用了,我們將這樣的變量稱為局部變量(Local Variable)。 要知道,當函數被執行時,Python 會為其分配一塊臨時的存儲空間,所有在函數內部定義的變量,都會存儲在這塊空間中。而在函數執行完畢后,這塊臨時存儲空間隨即會被釋放并回收,該空間中存儲的變量自然也就無法再被使用。 舉個例子: ``` def demo(): add = "python" print("函數內部 add =",add) demo() print("函數外部 add =",add) ``` 程序執行結果為: 函數內部 add = python Traceback (most recent call last): ? File "C:\\Users\\yiniuedu\\Desktop\\file.py", line 6, in ??? print("函數外部 add =",add) NameError: name 'add' is not defined 可以看到,如果試圖在函數外部訪問其內部定義的變量,Python 解釋器會報 NameError 錯誤,并提示我們沒有定義要訪問的變量,這也證實了當函數執行完畢后,其內部定義的變量會被銷毀并回收。 值得一提的是,函數的參數也屬于局部變量,只能在函數內部使用。例如: ``` def demo(name,add): print("函數內部 name =",name) print("函數內部 add =",add) demo("Python教程","http://x.linyiwang.cn/python/") print("函數外部 name =",name) print("函數外部 add =",add) ``` 程序執行結果為: 函數內部 name = Python教程 函數內部 add = http://x.linyiwang.cn/python/ Traceback (most recent call last): ? File "C:\\Users\\yiniuedu\\Desktop\\file.py", line 7, in ??? print("函數外部 name =",name) NameError: name 'name' is not defined > 由于 Python 解釋器是逐行運行程序代碼,由此這里僅提示給我“name 沒有定義”,實際上在函數外部訪問 add 變量也會報同樣的錯誤。 ## Python全局變量 除了在函數內部定義變量,Python 還允許在所有函數的外部定義變量,這樣的變量稱為全局變量(Global Variable)。 和局部變量不同,全局變量的默認作用域是整個程序,即全局變量既可以在各個函數的外部使用,也可以在各函數內部使用。 定義全局變量的方式有以下 2 種: * 在函數體外定義的變量,一定是全局變量,例如: ``` add = "http://x.linyiwang.cn/shell/" def text(): print("函數體內訪問:",add) text() print('函數體外訪問:',add) ``` * 運行結果為: 函數體內訪問: http://x.linyiwang.cn/shell/ 函數體外訪問: http://x.linyiwang.cn/shell/ * 在函數體內定義全局變量。即使用 global 關鍵字對變量進行修飾后,該變量就會變為全局變量。例如: ``` def text(): global add add= "http://x.linyiwang.cn/java/" print("函數體內訪問:",add) text() print('函數體外訪問:',add) ``` * 運行結果為: 函數體內訪問: http://x.linyiwang.cn/java/ 函數體外訪問: http://x.linyiwang.cn/java/ 注意,在使用 global 關鍵字修飾變量名時,不能直接給變量賦初值,否則會引發語法錯誤。 ## 獲取指定作用域范圍中的變量 在一些特定場景中,我們可能需要獲取某個作用域內(全局范圍內或者局部范圍內)所有的變量,Python 提供了以下 3 種方式: #### 1) globals()函數 globals() 函數為 Python 的內置函數,它可以返回一個包含全局范圍內所有變量的字典,該字典中的每個鍵值對,鍵為變量名,值為該變量的值。 舉個例子: ``` #全局變量 Pyname = "Python教程" Pyadd = "http://x.linyiwang.cn/python/" def text(): #局部變量 Shename = "shell教程" Sheadd= "http://x.linyiwang.cn/shell/" print(globals()) ``` 程序執行結果為: { ...... , 'Pyname': 'Python教程', 'Pyadd': 'http://x.linyiwang.cn/python/', ......} > 注意,globals() 函數返回的字典中,會默認包含有很多變量,這些都是 Python 主程序內置的,讀者暫時不用理會它們。 可以看到,通過調用 globals() 函數,我們可以得到一個包含所有全局變量的字典。并且,通過該字典,我們還可以訪問指定變量,甚至如果需要,還可以修改它的值。例如,在上面程序的基礎上,添加如下語句: ``` print(globals()['Pyname']) globals()['Pyname'] = "Python入門教程" print(Pyname) ``` 程序執行結果為: Python教程 Python入門教程 #### 2) locals()函數 locals() 函數也是 Python 內置函數之一,通過調用該函數,我們可以得到一個包含當前作用域內所有變量的字典。這里所謂的“當前作用域”指的是,在函數內部調用 locals() 函數,會獲得包含所有局部變量的字典;而在全局范文內調用 locals() 函數,其功能和 globals() 函數相同。 舉個例子: ``` #全局變量 Pyname = "Python教程" Pyadd = "http://x.linyiwang.cn/python/" def text(): #局部變量 Shename = "shell教程" Sheadd= "http://x.linyiwang.cn/shell/" print("函數內部的 locals:") print(locals()) text() print("函數外部的 locals:") print(locals()) ``` 程序執行結果為: 函數內部的 locals: {'Sheadd': 'http://x.linyiwang.cn/shell/', 'Shename': 'shell教程'} 函數外部的 locals: {...... , 'Pyname': 'Python教程', 'Pyadd': 'http://x.linyiwang.cn/python/', ...... } > 當使用 locals() 函數獲取所有全局變量時,和 globals() 函數一樣,其返回的字典中會默認包含有很多變量,這些都是 Python 主程序內置的,讀者暫時不用理會它們。 注意,當使用 locals() 函數獲得所有局部變量組成的字典時,可以向 globals() 函數那樣,通過指定鍵訪問對應的變量值,但無法對變量值做修改。例如: ``` #全局變量 Pyname = "Python教程" Pyadd = "http://x.linyiwang.cn/python/" def text(): #局部變量 Shename = "shell教程" Sheadd= "http://x.linyiwang.cn/shell/" print(locals()['Shename']) locals()['Shename'] = "shell入門教程" print(Shename) text() ``` 程序執行結果為: shell教程 shell教程 顯然,locals() 返回的局部變量組成的字典,可以用來訪問變量,但無法修改變量的值。 #### 3) vars(object) vars() 函數也是 Python 內置函數,其功能是返回一個指定 object 對象范圍內所有變量組成的字典。如果不傳入object 參數,vars() 和 locals() 的作用完全相同。 > 由于目前讀者還未學習 Python 類和對象,因此初學者可先跳過該函數的學習,等學完 Python 類和對象之后,再回過頭來學習該函數。 舉個例子: ``` #全局變量 Pyname = "Python教程" Pyadd = "http://x.linyiwang.cn/python/" class Demo: name = "Python 教程" add = "http://x.linyiwang.cn/python/" print("有 object:") print(vars(Demo)) print("無 object:") print(vars()) ``` 程序執行結果為: 有 object: {...... , 'name': 'Python 教程', 'add': 'http://x.linyiwang.cn/python/', ......} 無 object: {...... , 'Pyname': 'Python教程', 'Pyadd': 'http://x.linyiwang.cn/python/', ...... }
                  <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>

                              哎呀哎呀视频在线观看