變數作用域

2021-08-31 21:23:52 字數 1682 閱讀 3666

python

的作用域一共有

4種,分別是:

l (local) 區域性作用域

e (enclosing) 閉包函式外的函式中

g (global) 全域性作用域

b (built-in) 內建作用域

以l –> e –> g –>b

的規則查詢,即:在區域性找不到,便會去區域性外的區域性找(例如閉包),再找不到就會去全域性找,再者去內建中找。

x = int(2.9)  # 內建作用域

g_count = 0  # 全域性作用域

def outer():

o_count = 1  # 閉包函式外的函式中

def inner():

i_count = 2  # 區域性作用域

內建作用域

內建作用域是通過乙個名為

builtin

的標準模組來實現的,但是這個變數名自身並沒有放入內建作用域內,所以必須匯入這個檔案才能夠使用它。在

python3.0

中,可以使用以下的**來檢視到底預定義了哪些變數:

import builtins

dir(builtins)

全域性變數,區域性變數舉例

def 

changeme

(mylist):

# "修改傳入的列表"

1, 2, 3,

4]) 

#  這裡沒有定義,也沒有報錯,說明milist以已經存在,修改的是全域性變數

print("

函式內取值1: "

, mylist)

print

("2"

, id

(mylist))

# mylist.clear()

mylist  = [9,

8,7,

6,]  # 

這裡定義的是區域性變數,和函式外定義的同名列表的id是不一樣的,乙個是區域性變數乙個是全域性變數,以下在修改是區域性變數,和全域性變數沒有關係。對可更改型別的引用進行修改,結果就不一樣了。

print("

函式內取值2: "

, mylist)

print

("3"

, id

(mylist))

return

mylist

# 呼叫changeme函式

mylist = [

10,

20, 30]

print

("1"

, id

(mylist))

print

("4"

, id

(changeme(mylist)))

print("

函式外取值: "

, mylist)

print

("5"

, id

(mylist))

global

:當內部作用域想修改外部作用域的變數時,就要用到

global

和nonlocal

關鍵字了。

nonlocal

:如果要修改巢狀作用域(

enclosing

作用域,外層非全域性作用域)中的變數則需要

nonlocal

關鍵字了(在二層函式中修改一層函式的區域性變數)

作用域,變數作用域,作用域鏈知識

第2章 變數作用域 第3章 作用域鏈 預覽 1.全域性作用域 整個script標籤下 或者是單獨的js檔案 外部js 2.區域性作用域也叫 函式作用域 在函式內部就是區域性作用域 這個 的名字 變數 只在函式內部起作用和效果 3.不同作用域下,定義相同變數名是不衝突的。如果是在同一作用域宣告2個相同...

變數作用域

python任何變數都有其特定的作用域 在函式內部的變數一般只能在函式內部使用,這些只能在程式特定的區域使用的變數稱為區域性變數.在乙個檔案頂部,在函式的外部定義的變數,可以供該檔案的任何函式呼叫,這樣的變數稱為全域性變數 區域性變數和全域性變數的關係 區域性變數可以通過global關鍵字強制宣告為...

變數作用域

1 全域性變數 定義在函式外邊的變數,通常函式是無法直接獲取到外部變數的,需要獲取時得需要在函式裡加global方法 例如在外部定義乙個a 5 fu ncti onte st sum 此時是無法直接獲取到a的 方法就 是 fu ncti onte st sum echo test 2 靜態變數 st...