恩?為什麼Function中的變數都抓不到呢?Python 全域與區域變數-初學者系列
相關文章:
一個觀念,開啟Python 網路爬蟲成長之路!(含全系列連結)
Python爬下PTT文章內容技巧(含程式碼)
在上次《新手入門 Python Function》出來後,有網友推薦我一起把全域與區域變數一起講一下。所以就來聊聊全域變數與區域變數吧。新手有時候會有個疑問:
為什麼 Function中的變數在Function外都抓不到呢?
答案是:因為在Function中的變數是區域變數喔!
根據全域變數與區域變數官方文件所說為:
What are the rules for local and global variables in Python?
In Python, variables that are only referenced inside a function are implicitly global. If a variable is assigned a value anywhere within the function’s body, it’s assumed to be a local unless explicitly declared as global.
什麼意思呢? 我直接用我自己的觀點帶上範例跟大家解說吧!
全域變數
通常我們初學者一開始學Python 時,必學一個東西叫做”變數”。我們會在任意程式中給予一個變數名稱並等於一個值,沒意外這些都是全域變數。尤其是你會發現通常他們都沒有任何的縮排。全域變數都有個特性:
只要是在同一個Python檔案中,任何區塊都可以呼叫到這個變數。
區域變數
區域邊數與全域變數沒有任何不同,一樣都是給予一個變數名稱並等於一個值。關鍵的差異在於這個變數被宣告在哪個區域。區域變的特性是:
區域變數只能在特定區域內才可以被程式呼叫。
什麼意思呢?我們來看一個範例:
你可以看到在 tmp 變數被給予值的區域是在名為Sum Function中。在Function區域外並沒有被給予任何數值。所以在這裡的tmp 就是一個區域變數。執行的話會是:
如果看不懂def 的意思可以參考:《新手入門 Python Function》
如何抓到Function中的區域變數呢?
曾經有個初學者問我如何抓到Function 中的變數。讓我很好奇問他抓取區域變數的目的?意外非常單純的說:只是想要Debug 看看這個變數在這個Function中,懶得return出來。讓我哭笑不得XDD 當然可以只要在變數中加上global
就可以了!
但是強烈不建議使用
global 宣告
!
因為域變數的目的很簡單。就是為了保護該變數在Function的執行過程中,變數不會被任意其他程式區塊影響。所以是故意這樣設置的。
你想想看如果你的Function 在執行時,中間的變數突然被修改過了。你在Debug Function時不就更容易搞不清楚到底是錯Function,還是外面呼叫的程式呢? 所以最好的方式還是把要用的變數Return出來喔!
程式碼:
相關文章:幫助Python新手度過陣痛期的關鍵功能!整合開發環境 Spyder三大功能
相關文章:怒砍Anaconda ! 手動移除windows Anaconda 殘留檔案!
相關文章:入門必看!Windows 懶人搭建Anaconda Python 學習環境
相關文章:為什麼我的Python 總是學不好?
如果你覺得這篇文章很棒
你的拍手是我前進的動力!