| 位运算符 | 功能 |
| 按位左移 | |
| >> | 按位右移 |
| | | 按位或 |
| 按位与 | |
| ^ | 按位异或 |
| ~ | 按位取反 |
其中值得一提的是,按位左移多少位就相当于给原数字乘上2的N次方,同理按位右移多少位就相当于给原数字除以2的N次方。在python中几乎是不会用到位运算的。
python中的集合也是数值类型,集合提供了朴素集合论中集合的基本功能。满足确定性,互异性,无序性。需要特别注意的是,集合只包含不可变对象(可哈希的)类型,列表和字典是不能嵌入其中的,元组是可以的。但是集合本身是可变对象。关于集合的运算可以阅读集合论相关知识。
下面的例子展示集合中的元素只能是不可变对象,但是集合本身是可变对象。
>>> a.add(1)
>>> a
{1}
>>> a.add("123")
>>> a
{'123', 1}
>>> b = 1,2
>>> a.add(b)
>>> a
{'123', 1, (1, 2)}
集合中添加数字,字符串,元组等不可变对象是没有问题的。下面看一下添加可变对象会发生什么。
>>> c = [1,2,3]
>>> a.add(c)
Traceback (most recent call last) :
File "stdin>", line 1, in module>
TypeError: unhashable type: 'list'
>>> d = {'1':1,'2':2}
>>> a.add(d)
Traceback (most recent call last) :
File "stdin>", line 1, in module>
TypeError: unhashable type: 'dict'
>>> e = set()
>>> a.add(e)
Traceback (most recent call last) :
File "stdin>", line 1, in module>
TypeError: unhashable type: 'set'
可以看到,无论是list,dict,set哪一个,都会提示类型错误,不可哈希类型。
python提供了显示的布尔类型,True和False是预置的两个布尔值。实际上,True和False是bool的两个实例,而bool只是内置类型int的子类。True和False的行为和1,0一致。bool为True和False重新定义了str和repr的字符串格式,所有打印出来就会显示True和False,而不是1,0.
有意思的是python制定了1,0两种情况下的显示,没有定义其余值的显示。所以显示的时候会发生下面的情况。
>>> True + 1 2
小数和分数类型都需要导入模块来创建,在这里不做过多的介绍。它们相比于浮点数而言,是精确的。尤其是当你需要高精度计算的时候,这就十分有必要了,通常大多数场合下,我们都不怎么需要它们。
>>> from decimal import Decimal
>>> a = Decimal('0.1')
>>> a
Decimal('0.1')
>>> from fractions import Fraction
>>> b = Fraction(1,3) # 1是分子,3是分母
>>> b
Fraction(1, 3)
到此这篇关于Python基础之数值类型详解的文章就介绍到这了,更多相关Python数值类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
咨 询 客 服