函式(命名空間 作用域 全域性變數和區域性變數)

2021-10-25 06:26:21 字數 1536 閱讀 6854

命名空間指的是儲存程式中的變數名和值的地方。命名空間的本質是乙個字典,用來記錄變數名稱和值。字典的key是變數的名稱,字典的value對於的是變數的值。

例如 命名空間一共分為三種:區域性命名空間、全域性命名空間、內建命名空間

區域性空間:

每個函式都有自己的命名空間,叫做區域性空間,它記錄了函式的變數,包括函式的引數 和區域性定義的變數

全域性空間:

每個模組擁有它自已的命名空間,叫做全域性命名空間,它記錄了模組的變數,包括函式、 類、其它匯入的模組。

內建命名空間:

任何模組均可訪問它,它存放著內建的函式和異常。

結果:

作用域指的是變數在程式中的可應用範圍。

作用域按照變數的定義位置可以劃分為4類即legb:

local(函式內部)區域性作用域。

enclosing(巢狀函式的外層函式內部)巢狀作用域(閉包)。

global(模組全域性)全域性作用域。

built-in(內建)內建作用域。(指的是builtins.py模組)

python內層作用域訪問外層作用域時的順序:

python搜尋4個作用域[本地作用域(l)之後是上一層結構中def或者lambda的本地作用域(e),之後是全域性作用域(g)最後是內建作用域(b)(即python的內建類和函式等)]

並且在第一處能夠找到這個變數名的地方停下來。如果變數名在整個的搜尋過程中都沒有找到,python就會報錯。

注意:在python中,模組(module),類(class)、函式(def、lambda)會產生新的作用域,其他**塊是不會產生作用域的,也就是說,類似條件判斷(if……else)、迴圈語句(for x in data)、異常捕捉(try…catch)等的變數是可以全域性使用的。

結果:在函式中定義的變數稱為區域性變數,只在函式內部生效,在程式一開始定義的變數稱為全域性變數,全域性變數的作用域是整個程式。

全域性變數是不可變資料型別,函式無法修改全域性變數的值。

全域性變數是可變資料型別,函式可以修改全域性變數的值。

結果:

結果:

命名空間作用域

作用域 命名空間所能夠作用的範圍 內建命名空間 程式在任何階段任何位置均可以使用 全域性有效 全域性命名空間 程式在任何階段任何位置均可以使用 全域性有效 區域性命名空間 一般情況下只在各自的區域性命名空間有效 global 在區域性命名空間內更改全域性命名空間變數,使用關鍵字生命。在變數是不可變型...

函式物件 命名空間 作用域

定義函式的三種方式 1.空函式 可以快速構建專案框架,使專案架構清晰明了 def func pass 2.無參函式 def func print from func 3.有參函式 def func x,y,args,kwargs pass 命名關鍵字引數 在函式定義階段 寫在 與 可變長引數之間的形...

作用域之全域性變數和區域性變數

一句話概括作用域 變數和函式的可訪問範圍 作用域分為三種 全域性作用域 全域性變數 區域性作用域 區域性變數 塊級作用域 es6新增 什麼是全域性變數 在函式外定義的變數 什麼是區域性變數 區域性變數也叫函式變數 在函式內定義的變數 作用域不同 全域性變數的作用域為整個程式,而區域性變數的作用域為當...