一、Python数据类型
(一)、数字
python中数有四种类型:整数、长整数、浮点数和复数
- 数字提供了标量贮存和直接访问。它是不可更改类型,也就是说变更数字的值会生成新的对象。
- 删除一个数值对象的引用,使用 del 语句。如果试图使用一个已经被删除的对象引用,会引发 NameError 异常。
- 布尔类型是只有两个值的整型。
- Python 也有长整数类型。它表示的数值大小远超过 C 语言的长整数。Python 标准整数类型等价于 C 的(有符号)长整型。
- Python 的长整数类型能表达的数值仅仅与你的机器支持的(虚拟)内存大小有关,换句话说,Python 能轻松表达很大的整数。
- 用大写字母 "L"表示长整数,这样能有效避免数字1和小写L的混淆。
- Python 中的浮点数类似 C 语言中的 double 类型,是双精度浮点数,可以用直接的十进制或科学计数法表示。每个浮点数占8个字节(64比特)。
- Python 语言中有关复数的几个概念:
- 虚数不能单独存在,它们总是和一个值为 0.0 的实数部分一起来构成一个复数
- 复数由实数部分和虚数部分构成
- 表示虚数的语法: real+imag j
- 实数部分和虚数部分都是浮点数
- 虚数部分必须有后缀j或J
- 复数有conjugate内建方法,调用它可以返回该复数的共轭复数对象。
- num.real 该复数的实部
- num num.imag 该复数的虚部
- num.conjugate() 返回该复数的共轭复数
- Python 使用数字类型强制转换的方法来解决数字类型不一致的问题,也就是说它会强制将一个操作数转换为同另一个操作数相同的数据类型。
- 类型转换的基本原则是:整数转换为浮点数,非复数转换为复数。
- Python 提供了coerce()内建函数来帮助你实现这种转换:
- 如果有一个操作数是复数,另一个操作数被转换为复数
- 否则,如果有一个操作数是浮点数,另一个操作数被转换为浮点数
- 否则, 如果有一个操作数是长整数,则另一个操作数被转换为长整数
- 否则,两者必然都是普通整数,无须类型转换
- 传统除法:如果是整数除法,传统除法会舍去小数部分,返回一个整数(地板除)。如果操作数之一是浮点数,则执行真正的除法。
- 幂运算:幂运算操作符和一元操作符之间的优先级关系比较特别,幂运算操作符比其左侧操作数的一元操作符优先级低,比起右侧操作数的一元操作符的优先级高。
- **(乘方)运算符优先级高于单目运算符。
- Python整数支持标准位运算:取反(~),按位 与(&), 或(|) 及 异或(^) 及左移(<<)和右移(>>)。
- 转换工厂函数:int(),bool(),long(),float()和complex()用来将其它数值类型转换为相应的数值类型。所谓工厂函数就是指这些内建函数都是类对象,当你调用它们时,实际上是创建了一个类实例。
- 功能函数:Python 有五个运算内建函数用于数值运算:abs(), coerce(), divmod(), pow()和round()。
- abs()返回给定参数的绝对值。如果参数是一个复数,那么就返回math.sqrt(num.real2 + num.imag2)
- coerce()仅回一个包含类型转换完毕的两个数值元素的元组
- divmod()内建函数把除法和取余运算结合起来, 返回一个包含商和余数的元组
- pow()和双星号(**)运算符都可以进行指数运算。不过二者的区别并不仅仅在于一个是运算符,一个是内建函数
- round()用于对浮点数进行四舍五入运算
- 仅适用于整数的内建函数(标准整数和长整数):一类用于进制转换,另一类用于 ASCII 转换:
- hex(num) 将数字转换成十六进制数并以字符串形式返回
- oct(num) 将数字转换成八进制数并以字符串形式返回
- chr(num) 将ASCII值的数字转换成ASCII字符,范围只能是0 <= num <= 255
- ord(chr) 接受一个ASCII或Unicode字符(长度为1的字符串),返回相应的ASCII或Unicode值
- unichr(num) 接受Unicode码值,返回其对应的Unicode字符。所接受的码值范围依赖于你的Python是构建于UCS‐2还是UCS‐4
- 模块: random
- randrange() 它接受和 range()函数一样的参数, 随机返回range([start,]stop[,step])结果的一项
- uniform() 几乎和 randint()一样, 不过它返回的是二者之间的一个浮点数(不包括范围上限)
- random() 类似 uniform() 只不过下限恒等于 0.0,上限恒等于 1.0
在Python中的字符串被确定为一组连续的字符在引号之间。 Python允许在任何对单引号或双引号。串的子集,可以使用切片操作符可采用([]和[:]),索引从0开始的字符串的开始和结束(-1)。
加号(+)符号的字符串连接操作符,而星号(*)表示重复操作。例如:
#!/usr/bin/python
str = 'Hello World!'
print str # Prints complete string
print str[0] # Prints first character of the string
print str[2:5] # Prints characters starting from 3rd to 5th
print str[2:] # Prints string starting from 3rd character
print str * 2 # Prints string two times
print str + "TEST" # Prints concatenated string
这将产生以下结果:
Hello World!
H
llo
llo World!
Hello World!Hello World!
Hello World!TEST
注意:
- python中单引号和双引号使用完全相同。
- 使用三引号('''或""")可以指定一个多行字符串。
- 转义符 '\'
- 自然字符串, 通过在字符串前加r或R。 如 r"this is a line with \n" 则\n会显示,并不是换行。
- python允许处理unicode字符串,加前缀u或U, 如 u"this is an unicode string"。
- 字符串是不可变的。
- 按字面意义级联字符串,如"this " "is " "string"会被自动转换为this is string。