文件组织
python中模块的导入要用到import函数,若要导入自定的模块,若导入模块与运行文件在同一目录下,则直接输入导入模块的名字即可。若不在同一目录,则需要写出相对路径。模块可以看做是类和函数的集合。
查看模块搜索路径:sys.path
包 &库
一般认为一个’*.py’文件是一个module,为了python应用更具扩展性,我们可以多个模块(module)组织成文件层次,这就产生了包(package)。
一个文件夹是一个package,一个package下可以有多个module,但是一个module只能属于一个package。
包的出现使得在创建模块时名字的冲突问题得以解决。需要注意的是在每个文件夹下都要建立一个_init__.py文件以保证Python将该文件夹所在的路径当做一个存在的包来处理,该文件夹可以是空的,也可以用来执行一些初始化代码或者声明全局 变量
Python中的库(library)是借用其他编程语言的概念,没有特别具体的定义,Python库着重强调其功能性。在Python中,具有某些功能的模块和包都可以被称作库。
导入模块/包
import语句除了支持import+package/module和直接import+*外,导入自定义的模块或者包要注明文件的路径。我们可以用".“和”…"分别表示当前节点和当前节点的父级节点,还以上边图片中的文件结构为例子,如果在surround文件中导入echo和equalizer,应该写为:
#absolute imports |
使用pprint()友好输出
以主程序的方式运行
if __name__='__main__': |
在我们导入模块时,有可能在被导入模块的主程序中有其他的代码,但是在我们调用该模块时就可以检查一下__name__变量,如果该变量的值为__main__。则说明该模块并不是以被调用的模块来执行。这也避免了我们在调用该模块时自动运行该模块的主程序的问题。
logging程序日志模块
python的logging模块提供方法可以让我们使用程序日志logging功能。
logging的等级
logging打印的信息有五个等,从低到高等级顺序如下:
DEBUG:显示程序的小细节,可以用来追踪关键变量的变化过程
INFO:显示程序日志(程序一般发生的事件)
WARNING:
ERROR:程序在某些状态将引发错误的缘由
CRITICAL:显示让整个系统当掉或者中断的错误
在Python的默认显示中,只显示Warning及以上的层级
调整打印信息的层级
- 可以通过
logging.basicConfig(level=logging.DEBUG)
来只显示不低于DEBUG层级的信息(如果设置为最高层级,那么就不会输出日志文件) - 可以通过
logging.disable(level)
停用level以下的所有层级
logger对象
格式化输出
可以在logging.basinConfig()
方法内调节format参数来实现输出信息的调节:
logging.basicConfig(level=logging.DEBUG,format='%(asctime)s- |
格式化字符串的含义:
- asctime:系统时间
- levelname:记载显示层级
- message:某层级的输出信息,也可以用来追踪变量
logging.basicConfig(level=logging.DEBUG,format='%(asctime)s- |
也可以用来追踪变量
输出到文件
通过指定logging.basicConfig()
的filename参数,就可以把输出的认知给保存到指定文件中
代码测试
代码测试主要分为两方面的测试,一方面是代码风格的测试(换行注释以及报错等),另外一方面是对代码逻辑的测试(输出的值是否正确,边界是否考虑到位等)
unittest
Python标准库提供了unittest来编写独立程序,一般情况下会测试程序编为单独的py文件,为了方便直接编在了一个文件中:
import unittest |
一般我们对一个函数进行测试时,会比较函数的返回值和期望输出(也叫断言)是否相同,在unittest中,可以使用assert(断言)开头的方法来检查返回的结果。
doctest
标注库的第二个测试包是doctest,它可以让我们把测试写在文档字符串中,也可以起到文档的作用。
import unittest |
调试代码
- vars():提取本地变量的值
pdb调试器
python的标准调试器是pdb,在命令行输入python -m pdb test.py
会启动程序并停在第一行,然后继续像命令行输入其他内容进行下一步操作:
- c:让程序继续运行到正常结束或者出现错误
- s:单步执行一行一行的代码(会进入函数内部,不进入的是n)
- l:查看之后的几行(后加数字表示从第几行开始显示)
- b 数字:设置断点
- p var_name:打印变量的值
项目打包
python中有一个pyinstaller包,用来打包python项目,打包完成后生成一个exe文件,可以在其他没有python的电脑上运行,运行的时候会调用命令行窗口。
pyinstaller -F path_test.py |