type对象及内置对象陷阱

本文介绍Python中的类型对象概念,包括如何测试类型以及一些常见的陷阱,如引用赋值的影响、重复增加序列深度、循环数据结构的问题及不可变类型的限制。
#一、关于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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值