Python作用域 全域性作用域 區域性作用域

2021-10-01 16:16:51 字數 1812 閱讀 9120

在python中,每個函式都會建立乙個作用域。pythonistas也可能稱函式擁有它們自己的命名空間(namespace)。這意味著當在函式體裡遇到變數名

時,python首先在該函式的命名空間中查詢,python包含了一些讓我們檢視命名空間的函式。讓我們寫乙個簡單的函式來探查一下local和global作用域

的區別。

python

12

3

4

5

6

7

8

9

10

11

12

13

14

# -*- coding: utf-8 -*-

"""

@time: 2018/1/25

@author: songhao

@file: namspace.py

"""

a

="this is a global variable"

def

fool()

:print

(locals()

,"區域性變數"

)fool()

print

(globals()

,"全域性變數"

)輸出結果是:

讀取 全域性作用域:

"""如果要修改 必須 global a

如果只是簡單的讀取可以 直接讀取

""""""

# 修改全域性變數

def fool():

print(a)

a = "new a"

print(locals(),"區域性變數")

fool()

print(globals(), "全域性變數")

# output

traceback (most recent call last):

file "/users/songhao/py/toutiaoshare/裝飾器/namspace.py", line 32, in

fool()

file "/users/songhao/py/toutiaoshare/裝飾器/namspace.py", line 28, in fool

print(a)

unboundlocalerror: local variable 'a' referenced before assignment

""""""

# 新增global,就可以修改了

def fool():

global a

a = "new_a"

print(a)

print(locals(),"區域性變數")

fool()

print(globals(), "全域性變數")

def fool():

x = 1

global x

fool()

print(x)

file "/users/songhao/py/toutiaoshare/裝飾器/namspace.py", line 62

global x

^syntaxerror: name 'x' is assigned to before global declaration

"""5868037 qq號

[email protected] qq郵箱

全域性作用域 塊級作用域

瀏覽器環境有一頂層物件window,window的屬性和var的全域性變數等價。如果用var設定了window物件的內建屬性作為變數,內建屬性值將會被覆蓋。如果是window物件的內建屬性,輸出預設值 非內建則輸出underfined。console.log window.name window.n...

Python 全域性作用域 區域性作用域及遞迴函式

例1 累加def add args 定義可變引數,累加 param args 可變引數 return 累加求和後的值 total 0 for value in args total value return total if name main print add 1,2,3,4,5,10 a 10...

全域性作用域 函式作用域 塊級作用域的理解

作用域是任何一門程式語言中的重中之重,因為它控制著變數與引數的可見性與生命週期。很慚愧,我今天才深入理解js的作用域.我不配做乙個程式設計師.開玩笑,什麼時候理解都不晚,重要的是理解了以後能不能深深地扎在記憶裡,不能,那就寫下來在乙個 塊 括在一對花括號中的一組語句 中定義的所有變數在 塊的外部是不...