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 @   永远抱着学徒的心  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示