python中的可变量:列表

gg = []
hh = '0'
kk = 0

def change_g(k):
k.append(1)

def change_l(h):
h = '1'

def change_p(c):
c += 1

change_g(gg)
change_l(hh)
change_p(kk)
print(gg)
print(hh)
print(kk)

====================================================
稍微思考下上面的代码返回值会是什么?

 得到返回值的时候我有点纳闷,为啥会返回[1],不是应该[]嘛

于是翻看了python资料,看了半天终于明白了

列表是一个可变的,当gg传入change_g中,传入的是列表对象的地址,函数的操作是直接对原对象操作的,而gg是指向这个列表对象地址的一个变量,所以最终打印时[1]

不仅仅列表,还有字典,集合也是这样的

另外,比如字符串,数字,元组等等不可变的是不会出现这样情况的,每次调用都是创建了一个副本对象,所以做的操作对原对象是没有影响的,比如上面的hh和kk,除非把副本对象赋值给原变量

比如  hh = change_l(hh)

那么hh打印就应该是'1'了
posted @ 2023-09-07 14:54  永远抱着学徒的心  阅读(12)  评论(0编辑  收藏  举报