赞
踩
在python中,对象在调用函数时,是否改变原有值得问题中,并无传值或引用的概念,而是要看实参是可变对象还是不可变对象。
1.对于不可变对象(如字符串),调用函数进行运算后,会生成一个新的对象(id()不同),实参原始对象则不会被改变
2.对于可变对象(如列表),调用函数进行运算后,仍对原始对象进行操作(id()相同),因此,实参原始对象会被改变是
3.可变对象包括:列表、字典、set、自定义类,调用函数后会改变实参原始对象的值
4.不可变对象包括:字符串,整型,浮点型,元组、frozenset,range,调用函数后不会实参改变原始对象的值
- def f_tring(n):
- n=n+"s"
- print("函数内,对n操作后得id(n)",id(n))
- return n
- def f_list(list):
- print("函数内,对n操作后得id(list)",id(list))
- return list.append('end')
- if __name__=="__main__":
- print("----------测试不可变对象:string类型数据")
- n="a"
- print('调用函数之前,n=',n)
- print("调用函数之前得id(n)",id(n))
- print('调用函数f_tring(n):',f_tring(n))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。