1内存地址

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))

1. #函数的参数data 和函数外面的v1引用的是同一内存地址

def func (data):
    print(id(data))     #1775314579376

v1 = "tom"
print(id(v1))           #1775314579376
func(v1)

1. 案例: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]

**2. python函数不像其他语言,函数会新开辟空间 **

3. 函数外面调函数, 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)

4. 如果函数内是字符串和43243143341432143数字外面调用,内存地址相同.

def func ():
    data = 123456
    print(id(data))     
    return data

v1 = func()
print(id(v1))          

v2 = func()
print(id(v2))

原文地址:https://www.cnblogs.com/john5yang/p/15570610.html