正式的官方教程其实到第12小节就已经差不多完结了,13小节及其以后多是一些介绍性的东西,在这里一并总结了。
1. 前面介绍的教程属于python官方教程文档的一部分,其他的一些文档包括:
(1)python标准库 https://docs.python.org/3.7/library/index.html#library-index
里面更详细的介绍了类型,函数,模块,涉及到网络通信,随机数,压缩等各个方面
(2)安装python模块 https://docs.python.org/3.7/installing/index.html#installing-index
介绍怎么安装用户开发的第三方模块
(3)python 语言参考 https://docs.python.org/3.7/reference/index.html#reference-index
更详细的介绍了python的语法
(4)更多python资源
<1> python官网 https://www.python.org/,包含了代码,文档以及相关的链接
<2> python 官方文档 https://docs.python.org
<3> python 包索引 https://pypi.org,用户创建的各种第三方库以供其他用户下载
<4> python cookbook, 官方都推荐的书,没看的抓紧看吧,代码,脚本,模块应有尽有
<5> python 相关的视频 http://www.pyvideo.org,来自各种会议或组会的视频链接
<6> scipy https://scipy.org, python用于科学计算的包
2. python相关的问题报告,以及建议什么的可以发送给 [email protected]
3. 交互输入编辑与历史替换
一些版本的python解释器能够支持当前是输入行的编辑以及历史替换,就像shell中的编辑风格一样,这种编辑风格是通过 GNU Readline library 实现的
3.1 Tab 键补全与历史编辑
当python解释器启动的时候,变量名和模块名的补全功能就可以使用了,熟悉linux shell命令的人都知道,当你输入一个变量的前几个字符后按下Tab,就会自动补全剩下的字符,或提示你可选的字符。对于点表达式,例如string.a,使用Tab键,会评估 . 以前的表达式,然后从该对象的属性中显示建议补全的内容。
默认配置下,所有的历史命令会存到用户目录下的一个.python_history 文件中,当下次交互输入的时候,这些历史命令可以重新调用。
3.2 交互式解释器的替代选择
(1)IPython, 现在应该叫jupyter notebook,是一个增强版的交互式python解释器,支持 Tab 补全, 对象查找,高级历史管理等,也可以完全定制和嵌入到别的应用中
(2)另一个增强型交互式环境是bpython
4. 浮点型数据计算,问题与局限
python中的float数字,是基于二进制小数。与十进制小数的表示方法有所差别。如0.125,在十进制中,这个值写成:1/10 + 2/100 + 5/1000;同理,在二进制中就写成了:0/2 + 0/4 + 1/8, 这两种表示方法有相同的值
问题是,大多数十进制小数并不能用二进制小数精确表示。结果就是你输入的十进制浮点数只是用二进制浮点数的近似表示,例如,十进制的小数0.1,无论你用多少位数的二进制数字来表示,都只能无限接近0.1,而不能完全等于
现在的大多数机器,浮点数都只能用二进制的小数表示。对应分数的分子用8字节的前53位来表示,分母表示为2的次方,例如,0.1表示为:3602879701896397 / 2 ** 55
需要注意的是,在python中,浮点数的输出即使看起来像十进制的小数,但是实际储存的只是用二进制表示的近似数
这样就带来一个问题,如前面小节中介绍decimal模块的时候也提到过的问题:
0.1 + 0.1 + 0.1 == 0.3 结果为False,对于需要精确十进制表示的场景,还是使用decimal 模块。
另外一种精确运算可以用fractions模块来进行,该模块实现了基于有理数的计算,能够精确的表示小数
python的包Numpy 和 Scipy也提供了用于数学统计的运算包
Python也提供了一些工具,为精确表示提供一些帮助,如:
float.hex() 方法以16进制为基数精确表示浮点数,并且这种表示方法是跨平台的
math.fsum()函数,会减少计算过程中的精度损失,以保证计算 精度,如:
sum( [0.1] * 10 ) == 1.0 # False
math.fsum( [0.1] * 10 ) # True
目前几乎所有使用IEEE-754浮点运算标准的机器以及所有的平台都会把python浮点数映射为IEEE-754双精度类型,754双精度类型包含53位精度。
5. 附录
5.1 交互模式
(1)错误控制
当错误发生时,解释器打印出错误信息和错误堆栈。在交互模式下,它会返回到初级提示符。当错误来自一个文件,它会以一个非0的退出状态退出。 一些错误是致命的,也会引起程序以非0状态退出。所有错误信息写入到标准错误流中,命令的正常输出会写入到标准输出流。
在初级提示符或次级提示符输入打断字符(ctr - c)会取消输入返回到初级提示符,如果程序在执行过程中被打断,则会报KeyboardInterrupt异常,这个异常可能能被try 语句处理
(2)执行python脚本
Linux系统中,python脚本在获得可执行权限后可以直接运行,需要在脚本的开头指定python解释器,如下:
#!/usr/bin/env python
给脚本加上可执行权限:
chmod +x myscript.py
在window系统上,不需要额外添加权限,直接双击脚本就可以运行了
(3)交互配置文件
在python的交互模式中,解释器每次启动都要执行的命令可以在启动配置文件(PYTHONSTARTUP)中进行配置。这个文件只有在交互模式下才会读取,如果想在脚本中使用这些启动设置,就必须在脚本中声明,如下:
import os
filename = os.environ.get('PYTHONSTARTUP')
if filename and os.path.isfile(filename):
with open(filename) as fobj:
startup_file = fobj.read()
exec(startup_file)
(4)定制模块
python中sitecustomize 和 usercustomize来定制模块,要定制模块,需先用如下方法找到site-packages目录的位置:
import site
site.getusersitepackages() # 获取site-packages路径
在site-packages 目录下创建一个usercustomize.py文件,里面放入所需要的模块内容,python每次启动时都会读取该文件,如果python 启动时加上 -s 选项,则禁用该文件导入。
sitecustomize以相同的方式工作,通常由计算机管理员在全局的site-packages目录下进行创建,并在usercustomize之前被导入。
本篇内容到此结束,参见官方 文档:https://docs.python.org/zh-cn/3.7/tutorial/interactive.html
https://docs.python.org/zh-cn/3.7/tutorial/floatingpoint.html
https://docs.python.org/zh-cn/3.7/tutorial/appendix.html
本系列文章到此结束,敬请期待后续主题