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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ### 4.2.5 變量的作用域 程序中的變量都有自己的作用域(scope,或稱轄域),即程序的一部分區域,在其中可以訪問該變量。一個變量只有在它的作用域中才有定義,才能被訪問。 局部變量 在一個函數中定義的變量稱為局部變量(local variable),因為它們的作用域局限于該 函數的函數體,在函數外部是沒有定義的。例如: ``` >>> def func(x,y): z = x + y print z >>> func(1,2) 3 ``` 函數 func 中定義了局部變量 z。由于語句 print z 是 func 函數體內的語句,所以 可以訪問 z。如果函數外部的 print 語句試圖顯示 z 的值,則會出錯。例如接著上例繼續 執行: ``` >>> print z Traceback (most recent call last): File "<pyshell#9>", line 1, in <module> print z NameError: name 'z' is not defined ``` 函數的形式參數也可以看作是函數的局部變量,即只能在函數體內訪問。形式參數不同 于局部變量的是:形式參數的值是在調用函數時通過參數傳遞而來的。如上例中函數 func 有兩個參數 x 和 y,當調用 func(1,2)時相當于執行了兩個對局部變量的賦值語句 x = 1 和 y = 2。 函數的局部變量和形式參數僅在函數體內有定義,因此即使與函數外部的變量同名也不 會帶來問題。例如我們接著上例繼續執行語句: ``` >>> x = 1 >>> z = 2 >>> func(x,z) 3 ``` 這里,x 和 z 是在函數 func 的外部定義的變量,它們雖然分別與 func 的形式參數 x 和局 部變量 z 同名,但實際上毫無聯系。執行 func(x,z)時,Python 先在 func 外部計算 x 和 z 的值,然后將結果傳遞給 func 的形式參數 x、y,因此最終執行的是 func(1,2)。圖 4.6 給出了這個過程的示意圖。 ![](https://box.kancloud.cn/2016-02-22_56cafcdf191c1.png) 圖 4.6 函數局部變量與外部變量同名 全局變量 函數內部的變量具有局部性,這符合模塊化編程思想的要求。作為一種模塊化構件,函 數就像“黑盒”一樣,其內部細節應該對外部不可見。同理,函數內部也不應直接使用外界 的東西。如果函數需要外界的數據,正確的做法是通過參數來傳遞給函數。也就是說,函數 的參數除了用于表示可變數據、增強函數的通用性之外,還應作為外界向函數傳遞數據(即使是一個固定不變的數據)的唯一渠道。下面是一個函數直接使用外界數據的例子: ``` >>> s = "hello" >>> def f(): print s >>> f() hello ``` 這里,函數 f()的功能是打印變量 s 的值,但這個 s 并不是 f()自己的局部變量,而是 f() 外部的變量,相對于 f()可稱為全局變量(global variable)。盡管這個用法在 Python 中是合 法的,但這不是好的編程風格。正確的做法是將變量 s 的值通過參數傳遞給 f(): ``` >>> s = "hello" >>> def f(x): print x >>> f(s) hello ``` 在實際應用中,可能會有多個函數共同操作(讀取或修改)一個數據的情形,這時采用 參數傳遞的方式比較麻煩,而采用全局變量則顯得直接了當。下面我們用一個簡單程序說明 Python 中全局變量的用法。 【程序 4.7】eg4_7.py ``` def f(): global x x = x + 1 print x def g(): global x x = x - 1 print x x = 0 f() g() ``` 程序中定義了兩個函數 f()和 g(),它們的函數體中都包含一條聲明全局變量的語句: global x 意為本函數中所使用的 x 是在函數外部定義的全局變量。f()的功能是對全局變量 x 加 1,g()的功能是對全局變量 x 減 1。執行結果如下: ``` >>> import eg4_1 1 0 ``` 可見執行 f()之后 x 變成了 1,再執行 g()又把 x 改回了 0。
                  <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>

                              哎呀哎呀视频在线观看