#[demo1]
num = 100
deffunc
():
newvalue = 123
#乙個全新的區域性變數newvalue
print(newvalue)
func() #輸出區域性變數newvalue 即新的區域性變數
#[demo2]
num = 100
deffunc
():
num= 123
#宣告乙個全新的區域性變數num,雖然名字和外界的全部變數相同 但是是新的乙個變數且是區域性有效的。遮蔽了外面的同名的全部變數
print(num)
func() #輸出區域性變數num=123 即新的區域性變數。
#[demo1]
num = 100
deffunc
():
x = num+200
#使用值做引數,那麼其實是copy乙份num全部變數的值
print(x)
print(id(num)) #id值
func() #輸出300 即沒有區域性變數宣告 那麼使用就是全域性變數
print(id(num)) #id值
#[demo2]
list = [100]
deffunc
():
print(list)
print(id(list))
func() #輸出[100,200]
因為本身是不能的,你修改然後賦值的時候會出現矛盾。即你涉及到賦值var = *** 修改的時候,那麼會被語法解析會宣告乙個新的區域性變數var。當然物件型別除外,你可以直接操作他的元素。#[demo1]
num = 100
deffunc
():
num= 123
#本來你的意圖是賦值給全域性變數num,但是此處會被解析為宣告乙個全新的區域性變數num
print(id(num))
func() #輸出區域性變數newvalue 即新的區域性變數
print(id(num))
那麼怎麼辦?才能在區域性變數賦值修改全域性變數
#[demo1]
num = 100
deffunc
():global num #宣告這個num是全域性的哦。如果全域性變數已經有這個num變數那就是指的它 如果全域性沒這個num那就新定義乙個全域性變數。
num = 200
#此時此刻 凡是在函式內部num的意思始終是指全域性變數。不可能有個區域性變數叫num的。
print(num )
func()
print(num ) #輸出200 說明修改的就是全域性變數啊
#[demo2]
deffunc
():global num #宣告這個num是全域性的哦。而且恰恰是此時沒有乙個全域性變數是num。那麼如果全域性沒這個num那就新定義乙個num的全域性變數。
num = 200
print(num )
func()
print(num ) #輸出200 說明新定義了乙個全域性變數num
static全域性 區域性變數,全域性變數及區域性變數
1 static變數和全域性變數都是分配在 靜態儲存區 2 static全域性變數 static區域性變數 全域性變數和區域性變數區別 他們都是分配在 靜態儲存區內,都是在程式開始的時候初始化的,他們的區別是作用域不同,static全域性變數作用域是在申明所在的檔案中,而全域性變數是全域性的,其他檔...
python區域性變數和全域性變數
name gongwei 要在函式裡修改全域性變數,需要用globle home earth china cq def change name home 地球 注意只有字串和單獨數值在區域性變數中修改全域性變數要用globle輔助,其他如列表 字典可以直接修改 global name name xu...
python 區域性變數和全域性變數
在python中全域性變數可以作用於所有域,而函式內部呼叫時會優先使用區域性變數,如果搜尋不到區域性變數就會在全域性中搜尋相同的變數 當然,以上並不意味著我們不能在函式內部使用全域性變數。python 的作用域規則是,變數的建立總是會建立乙個新的區域性變數但是變數的訪問 包括修改 在區域性作用域查詢...