python知识点:可变对象和不可变对象
来源:互联网 发布:天下数据员工 编辑:程序博客网 时间:2024/05/17 10:05
python中,对象分为可变(mutable)和不可变(immutable)两种类型。
元组(tuple)、数值型(number){int,float}、字符串(string)均为不可变对象,而字典型(dictionary)和列表型(list)的对象是可变对象。
{我对可变对象的理解就是,变量a将其赋值给另一个变量b,修改这个变量b会直接修改原变量a,而不可变对象,就会复制变量a进行修改,不会修改原变量a;即可变对象引用指向一个,而不可变对象,随着修改,会指向不同的引用}
#coding:utf-8;i_int = 10j_int = 10k_int = 11i_str = 'Python'j_str = 'Python'k_str = 'python world'i_tuple = (1,2)j_tuple = (1,2)k_tuple = (1,2,3)print "i_int's id",str(id(i_int))print "j_int's id",str(id(j_int))print "k_int's id",str(id(k_int))print "i_str's id",str(id(i_str))print "j_str's id",str(id(j_str))print "k_str's id",str(id(k_str))print "i_tuple's id",str(id(i_tuple))print "j_tuple's id",str(id(j_tuple))print "k_tuple's id",str(id(k_tuple))
output:
i_int's id 30498944j_int's id 30498944k_int's id 30498920i_str's id 140092758495168j_str's id 140092758495168k_str's id 140092757760912i_tuple's id 140092757580688j_tuple's id 140092757580760k_tuple's id 140092757698192
发现了int,str的指向的值是一样的,那么它们的内存id一致;
值得注意的是tuple虽然都是(1,2),但内存id是不一样的;
j_int = j_int + 1j_str = j_str + str("Add something")print "Modified:j_int's id",str(id(j_int))print "Modified:j_str's id",str(id(j_str))
output:
Modified:j_int's id 30498920Modified:j_str's id 140092757761304
可以看到j_int和j_str的id已经改变,不再指向原来id。
#immutabletmp = j_intprint "tmp's id",str(id(tmp))tmp = tmp + 1print "Modified:tmp's id",str(id(tmp))print "j_int",j_intprint "tmp",tmp#mutabledt = {1:'1',2:'2'}d = dtprint "dt's id",str(id(dt))print "d's id",str(id(d))d[3]='3'print "dt's id",str(id(dt))print "d's id",str(id(d))for i in dt.keys(): print "dt's key",ifor i in d.keys(): print "d's key",i
output:
tmp's id 30498920Modified:tmp's id 30498896j_int 11tmp 12dt's id 140092757766224d's id 140092757766224dt's id 140092757766224d's id 140092757766224dt's key 1dt's key 2dt's key 3d's key 1d's key 2d's key 3
参考:
http://www.jianshu.com/p/c5582e23b26c 解释不错
0 0
- python知识点:可变对象和不可变对象
- python可变对象和不可变对象
- Python-可变对象和不可变对象
- python的可变和不可变对象
- Python基础:Python可变对象和不可变对象
- Python基础:Python可变对象和不可变对象
- Python中可变对象和不可变对象
- Python中的可变对象和不可变对象
- python 可变对象与不可变对象
- python可变对象与不可变对象
- (python)可变对象/不可变对象
- python中 可变与不可变对象
- Python 中可变与不可变对象
- python下的可变对象与不可变对象
- 可变对象 vs 不可变对象(Python)
- python笔记-可变对象与不可变对象
- python 之可变对象与不可变对象
- Python中的可变对象与不可变对象
- 一致性HASH算法
- 数据结构基础篇(5)--二叉树
- TensorFlow 实战(二)—— tf.train(优化算法)
- 《Understanding the difficulty of training deep feedforward neural networks》笔记
- 交换排序之冒泡与快排C/C++
- python知识点:可变对象和不可变对象
- window下线程同步之(Mutex(互斥器) )
- C++ 高效编程不得不看的九本开源书籍
- struts2-零配置
- java设计模式之三大分类,六大原则
- Kafka connector commit 失败
- Hexo 创建“关于我”界面
- Fried Fish
- 【HDU 1027 Ignatius and the Princess II】+ 全排列 + STL