python 函式變數作用域和變數型別解說

2021-09-18 01:46:43 字數 1654 閱讀 1443

#-*- 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+=numnum=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...