1、整数
python3中整数是单独的一种类型,一般整数和长整数合二为一,支持无限精度
2、浮点数/小数
支持16位小数,要求精度时可以使用round()、格式化(不建议超过16位精度)、math.ceil、math.floor、超过16位使用decimal
from decimal import Decimal
Decimal('0.1') + Decimal('0.1') + Decimal('0.1') - Decimal('0.3')
Decimal('0.0')
decimal.getcontext().prec = 4 ,设定全局小数值精度保留4位小数,再运行上面代码结果就会发生变化
为避免非截断行为影响python2.X得程序,math.trunc()可对小数截断,而只得到整数
>>> math.floor(2.5)
2
>>> math.floor(-2.5)
-3
>>> math.trunc(3.5)
3
>>> math.trunc(-3.5)
-3
3、除法
在python3.X中,/总是执行真除法,//执行向下取整法
>>> 5 / 2, 5 / -2
(2.5, -2.5)
>>> 5 //2, 5 // -2
(2, -3)
>>> 5 / 2.0 , 5 / -2.0
(2.5, -2.5)
>>> 5 // 2.0, 5 // -2.0
(2.0, -3.0)
4、分数
使用fraction模块表示分数
>>> x = Fraction(1, 3)
>>> y = Fraction(4, 6)
>>> x
Fraction(1, 3)
>>> y
Fraction(2, 3)
>>> print(x)
1/3
>>> print(y)
2/3
>>> x +y
Fraction(1, 1)
同样可以使用decimal模块确实精度
>>> decimal.getcontext().prec = 3
>>> decimal.Decimal(1) / decimal.Decimal(3)
Decimal('0.333')
运算优先级顺序如下表,从上到下优先级逐渐增高
yield x | 生成器函数send协议 |
lambda args: expression | 创建匿名函数 |
x if y else z | 三元选择(y为真x才被计算) |
x or y | 逻辑或 |
x and y | 逻辑与 |
not x | 逻辑非 |
x in y , x not in y | 成员关系 |
x is y, x is not y | 对象一次性测试 |
x < y, x <= y, x > y , x >= y | 大小比较,集合的子集和超集 |
x == y , x != y | 值等价性运算符 |
x | y | 按位或,集合并集 |
x^ y | 按位异或,集合对称差集 |
x& y | 按位与集合交集 |
x << y, x >> y | 将x左移或右移y位 |
x+y | 加、拼接 |
x - y | 减法、集合差集 |
x * y | 乘法、重复 |
x % y | 求余数、格式化 |
x / y , x // y | 真除法、向下取整除法 |
- x, +x | 取正, 取负 |
~x | 按位非(取反码) |
x ** y | 幂运算 |
x[i] | 索引 |
x[i:j:k] | 分片 |
x(...) | 调用(函数、方法、类) |
x.attr | 属性引用 |
(...) | 元组、表达式、生成器表达式 |
[...] | 列表、列表推导 |
{...} | 字典、集合,集合与字典推导 |
混合运算遵循运算符优先级:
括号分组子表达式
括号分组超越python的优先级规则,python会先计属圆括号内的表达式,然后再计算整个表达式
混合类型向上转换
python先将操作的对象转换成其中最复杂的操作数的类型,然后再对同类型的操作数运算,前提是,只适用于数值类型
上一篇提到过集合时可变类型,但既不是序列也不是映射,且其中的元素必须时可 哈希的即不可变的值,所以存储复合值的话元组成了最佳选择;同时集合本身可变即集合中不能包含集合,如果需要再另一个集合中储存集合,可以调用内置函数frozenset,frozenset会创建一个不可变的集合,该集合不可修改,并且可以嵌套到其他集合
集合创建
set([....})
>>> set([1, 2, 3])
{1, 2, 3}
>>> set('spam')
{'p', 's', 'a', 'm'}
>>> S = {'s', 'p', 'a', 'm'}
>>> S.add('alot')
>>> S
{'s', 'alot', 'a', 'm', 'p'}
>>> S.add(('ing', 'ing'))
>>> S
{'s', 'alot', 'a', ('ing', 'ing'), 'm', 'p'}
>>> # 'ing ing' is a song on 163music
强调一下,集合是无序的
otc() | 十进制转换位八进制 |
hex() | 十进制转换位十六进制 |
bin() | 十进制转换位二进制 |
int() | 将字符串转换为整数 |
0o/ 0 O | 八进制 |
0x/ 0X | 十六进制 |
0b/ 0B | 二进制 |
其他内置工具:pow(),abs(),sum()........