您的位置:首页 > 编程语言 > Python开发

type对象及内置对象陷阱

2015-09-06 23:26 543 查看
#一、关于type对象
"""
1、类型本身在python中也是对象类型。
2、内置的对象类型有:dict/list/str/tuple/int/float/complex/byte/type/set/file
"""

#类型测试的三种方式
"""
输出结果:
True True True
"""
print type([1]) == type([]),
print type([1]) == list,
print isinstance([1],list)

"""
函数类型的测试方法
"""
import types
def f():
pass
"""
输出结果:True
"""
print type(f) == types.FunctionType

#二、内置类型的常见陷阱
#1、赋值生成引用,而不是拷贝(以嵌套序列为例画出数据结构树图,就很好理解)
"""
L值改变时,M值随之改变
输出结果:
M= ['X', [1, 3, 444], 'Y']
"""
L = [1,3,4]
M = ['X',L,'Y']
L[2] = 444
print "M=",M

#2、重复增加层次深度
R = [11,12,13]
"""
R*3 == R + R + R
输出结果:
R1= [11, 12, 13, 11, 12, 13, 11, 12, 13]
"""
R1= R * 3
print "R1=",R1

"""
[R]*3 = [R] + [R] + [R] = [R,R,R]
输出结果:
R2= [[11, 12, 13], [11, 12, 13], [11, 12, 13]]
"""
R2= [R] * 3
print "R2=",R2

#3、循环数据结构:复合对象包含指向自身的对象
"""
1、python在对象中检测到循环,都会打印成[...]
2、输出结果:
L= ['GREEN', [...]]
"""
L = ['GREEN']
L.append(L)
print "L=",L

#4、不可变类型不可以在原处修改
T = (1,2,3)
#T[2] =4 ,赋值会报错

"""
输出结果:T= (1, 2, 4)
"""
T = T[:2] + (4,)
print "T=",T
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python type对象