一、整数
整数的大小只受限于机器内存的大小,因此,包含几百个数的整数也能创建与操作。二进制数用0b引导,八进制数用0o引导,十六进制数用0x引导。
所有二元数学操作符(+、-、/、//、%与**)都有相应的增强版赋值操作符(+=、-=、/=、//=、%=与*=)。
对象的创建可以通过给变量赋字面意义的值,x=17
,或者将相关的数据类型作为函数调用。
int(x),将x转换为整数时,如果转换失败会报ValueError异常,如果x不支持整数转换会报TypeError异常。
2.浮点类型
python提供了3种浮点类型,分别为内置的float与complex类型,以及来自标准库的decimal.Decimal类型。float存放的为双精度浮点数,具体取值范围依赖于构建python的c编译器,由于精度受限,相对来说不够可靠。
如果需要高精度运算则使用decimal.Decimal 类型,默认精度为小数点后28位。但是计算速度相对于float类型来说较慢。decimal.Decimal 类型只能与int进行混合类型运算,如果使用不兼容的数据类型,则会报TypeError异常。
(1)浮点数
float可以作为函数调用,在无参数的情况下返回0.0,转换时有返回NaN的可能。在IDLE中输入sys.float_info
可以查看到float类型的信息。
化为整数:
import sys
import math
int(float(1.2)) #舍弃小数部分
round(float(1.2)) #四舍五入
round(float(1.8)) #四舍五入
math.floor(float(1.2)) #向下转换最近的整数
math.ceil(float(1.2)) #向上转换最近的整数
math模块:
(2)复数
负数包含real与imag属性:
z = 1 + 10j
z.real,z.imag
Out[14]: (1.0, 10.0)
取共轭:
z = 1 + 10j
z.conjugate()
Out[16]: (1-10j)
math不支持复数的计算,但是cmath专门支持复数的计算。
(3)十进制数
当需要非常高精度时,需要利用decimal模块提供的十进制数,精度由我们具体掌控,但是计算速度较慢。
创建方式:decimal.Decimal(int/str),可以接受整数或字符串作为参数,但是不能接受float类型, 因为float类型本身不够精确。
import decimal
a = decimal.Decimal(19)
b = decimal.Decimal('19.12345567')
python3.1提供了函数可以将float数转化为最近似的十进制数。
import decimal
a = decimal.Decimal.from_float(0.221)
a
Out[19]: Decimal('0.2210000000000000019984014443252817727625370025634765625')
所有的数值型操作符与函数都可以应用于decimal.Decimal数据类型。但混合数据类型计算只能使用int型,否则会出现TypeError异常。
提供了用于计算自然对数的ln(函数)(以e为底)。
a.ln()
Out[20]: Decimal('-1.509592577464384226708411833')
3.字符串
在创建字符串时,使用三引号”’可以直接在引号中换行,双引号与单引号不能。
'''kai
shi '''
Out[30]: 'kai \nshi '
如果使用的字符串很长,要跨越2行,并且不想用三引号,可以使用如下方法:
python官网文档推荐使用括号将跨越多行的语句进行封装。
(1)字符串分片与步距
可以使用[]对字符串内容进行提取。
str[start]
str[start:end]
str[start:end:step]
其中如果start或者end缺省,则分别默认为字符串首字符与字符串尾字符,如果step为负数,则反过来。
(2)字符串操作符与方法
(3)使用str.format()方法进行字符串格式化
简单的位置参数:
"I {0} an {1} ".format("have",'apple')
Out[124]: 'I have an apple '
如果字符串中包含花括号{},需要对其进行复写:
"I {0} an {{{1}}} ".format("have",'apple')
Out[125]: 'I have an {apple} '
连接字符串与数字:
"{0} {1}".format(100,"yuan")
Out[127]: '100 yuan'
使用关键字参数名:
"I {v} an {fruit} ".format(v = 'have',fruit = 'apple')
Out[129]: 'I have an apple '
关键词参数总是在位置参数之后:
"I {v} an {0} ".format('apple',v = 'have')
Out[130]: 'I have an apple '
字段名可以引用集合数据类型,例如列表:
li = ['apple','have']
"I {0[1]} an {0[0]} ".format(li)
Out[132]: 'I have an apple '
使用字典对象:
li = dict(vb = 'have',fruit = 'apple')
"I {0[vb]} an {0[fruit]} ".format(li)
Out[138]: 'I have an apple '
存取属性:
"math.pi = {0.pi}".format(math)
Out[140]: 'math.pi = 3.141592653589793'
通过内置的loads()函数访问,loads()函数将还在作用范围内的所有变量与变量引用构成一个字典。并且可以通过映射拆分操作符**传递:
li = dict(vb = 'have',fruit = 'apple')
"I {vb} an {fruit} ".format(**li)
Out[142]: 'I have an apple '
(4)表象形式与字符串形式
在decimal.Decimal中有两种显示形式:
decimal.Decimal('123.654')
Out[144]: Decimal('123.654')
print(decimal.Decimal('123.654'))
123.654
第一种为表象形式,第二种为字符串形式。s:用于强制使用字符串形式,r:用于强制使用表象形式,a:用于强制使用表象形式,但仅限于ASCII字符。如下:
'{0} {0!s} {0!r} {0!a}'.format(decimal.Decimal('123.321'))
Out[151]: "123.321 123.321 Decimal('123.321') Decimal('123.321')"
(5)格式规约
WALDM