#-*- coding=utf-8 -*-
a = 100
def test(num):
# 如果是不可變型別,函式不會修改原始的值.如果是可變型別.函式預設是引用傳遞.會修改以前的值
# num +=num
print(num)
test(a)
print(a)
變數a
是整型屬於不可變型別,所以傳遞到test函式裡.num
屬於不可變型別,函式裡num
最終的值就會為
200, 列印的print(a)
的值就會為100.
python3 函式引用變數使用的注意點.py
#-*- coding=utf-8 -*-
b = [100]
def test(num):
# 如果是不可變型別,函式不會修改原始的值.如果是可變型別.函式預設是引用傳遞.會修改以前的值
num +=num
# num = num+num
print(num)
test(b)
print(b)
變數b是列表屬於可變型別,所以傳遞到test函式裡.num就預設引用傳遞了,而變數b又屬於全域性變數,函式裡num最終的值就會為[100, 100], 列印的print(b)的值也會為[100, 100].
python3 函式引用變數使用的注意點.py這裡嘮叨一句,num+=num和num=num+num結果不是一樣的.
#-*- coding=utf-8 -*-
b= [100] #定義乙個可變型別列表變數b
def test(num):
num +=num
print(num)
test(b)
print(b)
這裡的num指向的記憶體空間還是以前變數b開闢的空間,所以num = [100,100] ,所以變數b也跟著變成了[100,100],因為他們是引用傳值關係.
#-*- coding=utf-8 -*-
b= [100] #定義乙個可變型別列表變數b
def test(num):
num = num+num
print(num)
test(b)
print(b)
這裡的num指向的記憶體空間還是以前變數b開闢的空間,而num = num+num, 根據python運算子優先順序順序首先會算num+num就等於[100,100]然後就是賦值運算了這時會重新開闢乙個新的空間儲存[100,100]. 所以.函式裡的num的結果不會影響函式外的變數b了.
python 變數宣告和作用域
a 3 1.建立name a 2.建立object 3 3.將name 關聯到3 這個object上 name在建立時必須關聯到乙個object name可以在建立以後指向任何乙個object 包括不同型別 全域性變數和區域性變數 1.globals 返回當前模組的全域性變數,locals返回當前所...
python變數作用域
變數作用域 scope 在python中是乙個容易掉坑的地方。什麼是作用域 作用域簡單說就是乙個變數的命名空間。中變數被賦值的位置,就決定了哪些範圍的物件可以訪問這個變數,這個範圍就是命名空間。python賦值時生成了變數名,當然作用域也包括在內。python的作用域一共有4中,分別是 l loca...
Python 變數作用域
g global defchange global g g g change print g change print g 結果 global globalchange def function g function deflocalvar g local defglobalvar global g...