v1 = "tom"
print(id(v1)) #1972976791472
v2 = "你好"
v3 = "你好"
print(id(v2))
print(id(v3))
v4 = [1,2,3]
v5 = v4
print(id(v4))
print(id(v5))
-
函数的参数data 和函数外面的v1引用的是同一内存地址
def func (data):
print(id(data)) #1775314579376
v1 = "tom"
print(id(v1)) #1775314579376
func(v1)
- 案例:1
这个特性,可以利用函数帮助处理data_list这个列表
注意:可以使用这个功能的限制
1)参数必须是可变类型: list/dict/set
2)函数外面的数据类型也要是list/dict/set可变的,内外要对应
3)函数内部只能对内部原始修改,
def func(data):
data.append(5)
print(data, id(data)) #[1, 2, 3, 5] 2146680692992
data_list = [1,2,3]
func(data_list)
print(data_list) #[1, 2, 3, 5]
- python函数不像其他语言,函数会新开辟空间
- 函数外面调函数, v1 和v2 各有各的内存地址
def func ():
data = [1,2,3]
print(id(data)) #v1: 2134267787072 #v2:1817227167552
return data
v1 = func()
print(id(v1)) #v1: 2134267787072 #v2:1817227167552
v2 = func()
print(id(v2)
- 如果函数内是字符串和43243143341432143数字外面调用,内存地址相同.
def func ():
data = 123456
print(id(data))
return data
v1 = func()
print(id(v1))
v2 = func()
print(id(v2))