在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()
(locals()
,"區域性變數"
)fool()
(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的作用域.我不配做乙個程式設計師.開玩笑,什麼時候理解都不晚,重要的是理解了以後能不能深深地扎在記憶裡,不能,那就寫下來在乙個 塊 括在一對花括號中的一組語句 中定義的所有變數在 塊的外部是不...