数字
- 基本类型
首先,进入Python交互模式中:
|
|
在交互模式下:
如果输入3,就显示3,称为整数
当输入一个比较大的整数时,Python会自动会将这个大整数进行转换,转换的结果是一个“长整数”类型,为了表示它,会在其末尾显示一个L。由于这个操作是Python自动完成的,所有在Python中没有单独将“长整数”作为一个类型。
如果输入一个负数,直接在数字前面加上符号即可
Python也支持二进制、八进制、十六进制数。
- 对象身份
每个数字在Python都是一个对象,每个对象,在内存中都有自己的一个地址,这就是它的身份,用内建函数id()可以查看每个对象的内存地址即身份。
|
|
以上四个不同的数字是四个不同的对象,具有四个不同的内存地址。特别要注意,在数学上,3和3.0是相等的,但在这里,它们是不同的对象。
- 对象类型
如果要查找一个对象的类型,则使用type()这个内建函数。
|
|
变量
|
|
- 在Python中,对象有类型,变量无类型
- 当Python中写入5、6时,计算机就自动在其内存中某个地方建立了这两个对象,这两个对象的类型就是Int
- 上述代码中的x就好比是个标签,当x=5时,就是将x这个标签拴在了5上,通过这个x,就找到了5,于是“>>>x”输出的结果就是5。所以这个标签x没有类型之说,它不仅可以贴在整数类型的对象上,还可以贴在其他类型的对象上。
简单的四则运算
|
|
整数溢出问题
在一些高级编程语言中,整数溢出是必须正视的,但是,在Python里就无需担心了,原因就是Python为我们解决了这个问题,它支持“无限精度”的整数,所以,不用考虑整数溢出的问题,Int类型与任意精度的Long整数类型可以无缝转换,超过Int范围情况都将自动转换成Long类型。
如下计算:
|
|
你还可以在交互模式下计算2的1000次幂,计算方法是:
|
|
除法
整数与整数相除
|
|
Python2.x中
- 整数除整数,商是整数
- 整数除浮点数或浮点数除整数,商是浮点数
整数与浮点数相除
|
|
- 不管是除数或者被除数,只要有一个数是浮点数,结果就是浮点数。
然而,下面的计算可能会有点不好理解:
|
|
原因在于十进制和二进制的转换上,计算机使用的是二进制进行计算,在上面的例子中,我们输入的是十进制,就要把十进制转换成二进制,然后在计算。但是在转化中,浮点数转化为二进制后,不会精确等于十进制的0.1。因为计算机存储的位数是有限制的,所有就出现了上述现象。
一般情况下,只要简单地将最终显示的结果用“四舍五入”到所期望的十进制位数,就会得到期望的最终结果。
对于需要非常精确的情况,可以使用decimal模块,它实现的十进制运算适合高精度要求的应用。另外fractions模块支持另外一种形式的运算,它实现的运算基于有理数。最高要求则是使用有SciPy提供的Numerical Python包和其他用于数学和统计学的包。
引用模块解决除法问题
我们可以通过以下两种形式引入模块:
- 形式1:import module-name。import后面跟空格,然后是模块名称,例如 import os
- 形式2:from module1 import module11。module1是一个大模块,里面还有子模块module11,只想用module11,就这么写。
如下是解决除法问题的模块:
|
|
引用了此模块后,不管什么情况,都能够得到浮点数的结果了。
余数
- 模除,用%符号来取得两个数相除的余数
|
|
- 内建函数divmod()
|
|
内建函数divmod()返回的是两个值,这两个值在一个圆括号内,圆括号内的数字第一个表示商,第二个表示余数。
四舍五入
内建函数round()。
|
|
在round()中的第二个数,表示要保留的小数位数,返回值是一个四舍五入之后的数值。
接下里看下面的特殊情况:
|
|
这不是Python地Bug,归根到底是浮点数中的十进制转化为二进制引起的问题
常用数学函数和运算优先级
math模块
math模块是Python标准库中的,所以不用安装就可以直接安装。使用方法是:
>>> import math
这样就将math模块引用进来了,下面就可以使用这个模块提供的工具了,比如要得到圆周率:
|
|
这个模块都能做些什么事情呢?可以用下面的方法看到:
|
|
dir(module)可以查看任何模块所包含的工具。
help(function)可以用来查看每个函数的使用情况。
|
|
下面来看看一些基本函数的使用:
|
|
两个函数
- 1.求绝对值
|
|
- 2.四舍五入
|
|
运算优先级
运算规则表:
| 运算符 | 描述 |
|---|---|
| lamba | Lamba表达式 |
| or | 布尔或 |
| and | 布尔与 |
| not x | 布尔非 |
| in,not in | 成员测试 |
| is,is not | 同一性测试 |
| <,<=,>,>=,!=,== | 比较 |
| 竖线 | 按位或 |
| ^ | 按位异或 |
| & | 按位与 |
| <<,>> | 移位 |
| +,- | 加减 法 |
| *,/,% | 乘除、取余 |
| +x,-x | 正负号 |
| ~x | 按位翻转 |
| ** | 指数 |