01.python对象
标准类型
- 数字
- Integer 整型
- Boolean 布尔型
- Long integer 长整型 (python2)
- Floating point real number 浮点型
- Complex number 复数型
- String 字符串
- List 列表
- Tuple 元组
- Dictionary 字典
其他内建类型
- 类型
- Null对象(None)
- 集合/固定集合
- 函数/方法
- 模块
- 类
数字类型:
整数:python2中输入的数比较大时,会自动在其后面加字母L或它的小写l
浮点型:浮点数可以使用科学计数发表示如2e2,2e-3等
复数:由实部和虚部组成,使用j或J表示虚部,如3.12+12.5j
字符串类型:
使用单引号或多引号括起来的必须在一行,使用三引号的可在多行,三引号的能按找代码输入时的格式输出
字符串引号前加r,该字符串将原样输出,其中的转义字符不进行转义
print("12\t12") # 12 12 print(r"12\t12") # 12\t12
数据类型转换:
int(x) :将x转换为整型
float(x):转浮点型
complex(real[,imag]):创建一个复数
str(x):转为字符串
repr(x):转为表达式字符串
eval(str):计算在字符串中的有效python表达式,并返回一个对象
chr(x):将整数x转换为一个字符
ord(x):将一个字符x转换为它对应的整数值
hex(x):将一个整数x转换为一个十六进制的字符串
oct(x):将一个整数x转换为一个八进制的字符串
类型对象和type类型对象
调用内建函数type(),能够得到特定对象的类型信息
# 11是个int型对象
>>> type(11) <type 'int'>
# 类型对象的类型是type,所有类型对象的类型都是type,它是所有python类型的根和所有python标准类的默认元类 >>> type(type(11)) <type 'type'>
布尔值
下列对象的布尔值是False
- None
- False(布尔类型)
- 所有的值为零的数
- 0(整型)
- 0.0(浮点型)
- 0L(长整型)
- 0.0+0.0j(复数)
- ""(空字符串)
- [](空列表)
- ()(空元组)
- {}(空字典)
- 自定义对象的__bool__方法返回False或__len__方法返回0
用户创建的类实例如果定义了nonzero(__nonzero__())或length(__len__())且值为0,那么它们的布尔值就是False
class NonTest: # __nonzero__必须是静态的 @staticmethod def __nonzero__(self): pass if __name__ == '__main__': if NonTest():
print(True) # True
class NonTest: def __len__(self): return 0 class NonTest2: def __len__(self): return 1 if __name__ == '__main__': if NonTest(): print('NonTest') if NonTest2(): print('NonTest2') # 打印 NonTest2
对象身份比较
# python3.7测试 if __name__ == '__main__': # foo1 和 foo2 指向相同的对象 foo1 = foo2 = 4.2 print(foo1 is foo2) # True # foo3 和 foo4 指向相同的对象 foo3 = 5.3 foo4 = foo3 print(foo3 is foo4) # True # foo5 和 foo6 指向相同的对象 foo5 = 6.99 foo6 = 6.99 print(foo5 is foo6) # False print(id(foo5) == id(foo6)) # foo5 is foo6等价与id(foo5) == id(foo6) # True
#python2.7.10测试 >>> a = 1.99 >>> id(a) 140195765685264 >>> b = 1.99 >>> id(b) 140195765685240 >>> c = 1.99 >>> id(c) 140195765685216 >>>
标准类型内建函数
- cmp(obj1,obj2):
# python2中的比较 >>> cmp(a,b) 0 >>> cmp(1,1) 0 >>> cmp(1,2) -1 >>> cmp(2,1) 1
附:python3中cmp不能用了,可用operator代替
import operator if __name__ == '__main__': obj1 = 12.99 obj2 = 11.99+1.00 print(operator.eq(obj1, obj2)) # True
- repr(obj)或``
# python3不支持 `obj` # 返回一个对象的字符串表示 repr(obj)
- str(obj)
- type(obj)
instance()
# isinstance(_o,_t)判断对象类型 print(isinstance(6, (int, float))) # True print(isinstance(6.1, (int, float))) # True print(isinstance("6.1", (int, float))) # False print(isinstance("6.1", str)) # True
算术运算符:
//取整除,即返回商的整数部分
**幂,即返回x的y次方
左移位运算符<<
将一个二进制操作数向左移动指定位数,左端溢出丢失,右边空位补0,相当于乘以2的n次幂
右移位运算符<<
将一个二进制操作数向右移动指定位数,右端溢出丢失,左边空位补0,相当于除以2的n次幂