发布时间:2019-09-19 08:04:20编辑:auto阅读(2195)
防伪码:忘情公子著
解释器环境与选项
python解释器启动:
python [options] [-c cmd | filename | - ] [args]
| 选项 | 描述 |
| -3 | 启用将从python3中删除或更改某些功能的警告 |
| -B | 阻止在导入时创建.pyc或.pyo文件 |
| -E | 忽略环境变量 |
| -h | 打印所有可用命令行选项的列表 |
| -i | 在程序执行后进入交互模式 |
| -m module | 以脚本的形式运行库模块module |
| -O | 优化模式 |
| -OO | 优化模式,在创建.pyo文件时删除文档字符串 |
| -Q arg | 指定python2中除法运算符的行为,值为-Qold(默认值)、-Qnew、-Qwarn或-Qwarnall之一 |
| -s | 阻止将用户站点目录添加到sys.path |
| -S | 阻止包含site初始化模块 |
| -t | 报告关于不一致的标签使用警告 |
| -tt | 由于不一致的标签使用而导致TabError异常 |
| -u | 未缓冲的二进制stdout和stdin |
| -U | Unicode字面量。所有字符串字面量都以Unicode形式处理(仅在python2中使用) |
| -v | 详细模式。跟踪导入语句 |
| -V | 打印版本号并退出 |
| -x | 跳过源程序的第一行 |
| -c cmd | 以字符串形式执行cmd |
python解释器环境变量:
| 环境变量 | 描述 |
| PYTHONPATH | 以冒号分隔的模块搜索路径 |
| PYTHONSTARTUP | 在以交互方式启动时执行的文件 |
| PYTHONHOME | python安装的位置 |
| PYTHONINSPECT | 相当于-i选项 |
| PYTHONUNBUFFERED | 相当于-u选项 |
| PYTHONIOENCODING | 针对stdin、stdout和stderr的编码和错误处理。这是一个encoding[:errors]形式的字符串,如utf-8或utf-8:ignore |
| PYTHONDONIWRITEBYTECODE | 相当于-B选项 |
| PYTHONOPTIMIZE | 相当于-O选项 |
| PYTHONNOUSERSITE | 相当于-s选项 |
| PYTHONVERBOSE | 相当于-v选项 |
| PYTHONUSERBASE | 每个用户站点包的根目录 |
| PYTHONCASEOK | 指示为导入所使用的模块名称使用不区分大小写的匹配方式 |
python代码的测试、调试与探查
基于文档字符串来进行测试。
如果函数、类或模块的第一行是一个字符串,这个字符串就称为文档字符串(docstrings)。
内置函数help()或对象的默认方法__doc__可以显示这些文档字符串。
In [1]: def Sum(num1,num2): ...: '''The sumary of num1 and num2. ...: >>> Sum(2,5) ...: 7 ...: >>> Sum(12,77) ...: 89 ...: ''' ...: return num1 + num2 ...: In [2]: help(Sum) In [3]: Sum.__doc__ Out[3]: 'The sumary of num1 and num2.\n >>> Sum(2,5)\n 7\n >>> Sum(12,77)\n 89\n '
doctest模块:
doctest模块允许在文档字符串内嵌入注释以显示各种语句的期望行为,尤其是函数和方法的结果
此处的文档字符串看起来如同一个交互式shell会话;
可用于测试文档是否与程序主体保持同步,或基于文档对程序本身做测试
自定义模块mymod:
[root@localhost test]# pwd /root/test [root@localhost test]# cat mymod.py #!/usr/bin/python def add(num1,num2): ''' >>> add(12,43) 55 ''' return num1 + num2
在交互式模式下使用doctest模块进行测试:
In [4]: import sys
In [5]: sys.path.append('/root/test') #将/root/test加入模块搜索路径
In [6]: import mymod
In [7]: import doctest
In [8]: doctest.testmod(mymod)
Out[8]: TestResults(failed=0, attempted=1)
In [9]: doctest.testmod(mymod,verbose=True)
Trying:
add(12,43)
Expecting:
55
ok
1 items had no tests:
mymod
1 items passed all tests:
1 tests in mymod.add
1 tests in 2 items.
1 passed and 0 failed.
Test passed.
Out[9]: TestResults(failed=0, attempted=1)如果文档字符串中的结果与预期结果不一致,测试会显示出错的结果信息。
创建可自测试的模块:
在模块的尾部添加如下代码即可
[root@localhost test]# cat mymod.py #!/usr/bin/python def add(num1,num2): ''' >>> add(12,43) 55 ''' return num1 + num2 if __name__ == '__main__': import doctest print doctest.testmod(verbose=True) [root@localhost test]# python mymod.py Trying: add(12,43) Expecting: 55 ok 1 items had no tests: __main__ 1 items passed all tests: 1 tests in __main__.add 1 tests in 2 items. 1 passed and 0 failed. Test passed. TestResults(failed=0, attempted=1)
此类模块在python解释器中直接运行时即能进行自我测试。
上一篇: python之图形界面
下一篇: CentOS7 安装 Python3.6
51300
50749
41345
38158
32629
29526
28375
23249
23216
21538
1613°
2347°
1951°
1890°
2224°
1934°
2620°
4399°
4241°
3012°