Python的命令格式:

python [option] ... [-c cmd | -m mod | file | -] [arg] ...
选项 描述
-J

启动将从Python3中删除或更改某些功能的警告

-B 阻止在导入时创建.pyc或.pyo文件
-E 忽略环境变量
-h 打印所有可用命令行选项的列表
-i 在程序执行后进入交互模式
-m module 以脚本的形式运行库模块module
-O 优化模式
-OO 优化模式,在创建.pyo文件时删除文档字符串
-Q arg

指定Pyhthon2中除法运算符的行为,值为-Qold (默认), -Qwarn, -Qwarnall,

-Qnew之一

-s 阻止将用户站点目录追加到sys.path
-S 阻止包含site初始模块
-t 报告关于不一致的标签使用警告
-tt 由于不一致的标签使用而导致TabError异常
-u 未缓冲的二进制stdout和stdin
-U Unicode字面量,所有字符串字面量都以Unicode形式处理(仅在Python2中使用)
-v 详细模式,跟踪导入语句

-V

打印版本信息
-x 跳过源程序的第一行
-c cmd 以字符串形式执行cmd

2、doctest代码测试模块

Doctest模块允许在文档字符串内嵌入注释以显示各种语句的期望行为,尤其是函数和方法的结构;此处的文档字符串看起来如同一个交互式shell会话;可用于测试文档是否与主程序保持同步,或基于文档对程序本身做测试。

自定义测试模块test.py:

[root@mylinux home]# cat test.py
#!/usr/bin/python3
def add(num1,num2):'''>>> add(12,23)     #  '>>>'之后需要有一空格35'''return num1+num2

使用doctest模块进行测试:

In [1]: import test
In [2]: import doctest
In [3]: doctest.testmod(test)              #测试test.py模块
Out[3]: TestResults(failed=0, attempted=1)
In [4]: doctest.testmod(test,verbose=True)
Trying:add(12,23)
Expecting:35
ok
1 items had no tests:test
1 items passed all tests:1 tests in test.add
1 tests in 2 items.
1 passed and 0 failed.
Test passed.
Out[4]: TestResults(failed=0, attempted=1)

也可以直接定义自测试模块:

[root@mylinux home]# cat test.py
#!/usr/bin/python3
def add(num1,num2):'''>>> add(12,23)35'''return num1+num2
if __name__ == '__main__':import doctestdoctest.testmod()
[root@mylinux home]# python3 test.py     #测试通过时不会显示任何信息
[root@mylinux home]# python3 test.py -v  #输出详细信息
Trying:add(12,23)
Expecting:35
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.

3、Python的异常处理

在一些编程语言中,错误是通过特殊的函数返回值指出的,而Python使用异常,它是只有错误发生时执行的代码。错误通常有:语法错误和逻辑错误两大类。

 语法错误:软件的结构上有错误而导致不能被解释器解释或不能被编译器编译。

逻辑错误:由于不完整或不合法的输入所致,也可能是逻辑无法生成、计算或者输出结果需要的

过程无法执行等。

在Python中异常是一个对象,表示错误或意外,检测到一个错误时,将触发异常。Python可以通过异常传导机制传递一个异常对象,发出一个异常情况出现的信号;程序员也可以在代码中手动触发异常。Python异常可以理解为:程序员出现了错误而在正常控制流以外采取的行为。这种处理可以分为两个阶段。

第一阶段:解释器触发异常,此时当前程序流被打断;

第二阶段:异常处理,如忽略非致命性错误、减轻错误带来的影响等。

这种处理方式的主要作用有:

错误处理:默认处理,停止程序,打印错误信息;使用try语句处理异常并恢复

事件通知:用于发出有效状态信息

特殊情况处理:无法调整代码去处理的现场

终止行为:try/finally语句可确保执行必须的结束处理机制

非常规控制流程:异常是一种高级跳转(goto)机制

  • 异常的检测与处理

在Python中,异常通过try语句来检测,任何在try语句块里的代码都会被监测,检查有无异常。在本文中使用的是Python3作为演示。

try语句的主要有两种形式:

try-except:检测和处理异常。可以有多个except,支持使用else子句处理没有探测异常的执行代码

try-finally:仅检测异常并做一些必要的清理工作。仅能有一个finally。

try语句的复合形式:try-except-finally。

try-except语句:

try:try_suite
except Exception [as reason]:except_suiteIn [1]: try:...:     f1=open('/tmp/a.txt','r')...: except IOError as e:...:     print('Could nor open file',e)...:
Could nor open file [Errno 2] No such file or directory: '/tmp/a.txt'

try-except-else语句:

except分句个数没有限制,但else只能有一个;没有异常发生时,else分句才会执行;没有符合的except分句时,异常会向上传递到程序中的之前进入的try中或者道程序的顶层。

try:try_suite
except Exception1 [as reason]:suite_exception1
except (Exception1, Exception2 ,Exception3 ...)[, reason]:suite...
except:suite
else:else_suite

try-finally语句:

无论异常是否发生,finally子句都会执行;常用于定义必须进行的清理工作,如关闭文件或断开服务连接等;finally中的所有代码执行完后会继续向上一层引发异常。

try:try_suite
finally:finally_suite

try-except-else-finally语句:

try:try_suite
except Exception1:suite_exception1
except (Exception1, Exception2 ,):suite23
...
else:else_suite
finally:finally_suite
分句形式 说明
except: 捕捉所有(其他)异常类型
except name [as e]: 只捕捉特定的异常
except (name1,name2): 捕捉所列出的异常

else:

如果没有异常就运行
finally: 总是运行此代码块

4、自定义异常

raise语句允许程序员强制抛出一个指定的异常。其语法格式为:

raise[someexception [ ,arg [, traceback]]]

someexception:异常的名字,仅能使用字符串、类或实例;

args:以元组的形式传递给异常的参数;

traceback:异常出发时新生成的一个用于异常-正常化的跟踪记录,多用于重新引发异常。

In [9]: try:...:     raise NameError('HiThere')     #定义异常...: except NameError:...:     print('An except flew by!')...:     raise                          #触发异常...:
An except flew by!
--------------------------------------------------------------------------
NameError                                Traceback (most recent call last)
<ipython-input-9-9448df11d518> in <module>()1 try:
----> 2     raise NameError('HiThere')3 except NameError:4     print('An except flew by!')5     raise
NameError: HiThere

大多数的标准异常都是由StandError派生的,其中有3个抽象的子类:

ArithmeticError

由于算术错误引发的异常基类

OverflowError、ZeroDivisionError、FloatingPointError

LookupError

容器在接收到一个无效键或索引时引发异常

IndexError、KeyError

EnvironmentError

由于外部原因而导致的异常的基类

IOError、OSError、WindowsError

自定义异常类:

自定义异常类通常分为两大类:

自定义异常和多重继承:从定义异常类和标准异常类进行多重继承,例如:

class customAttributeError(CustomException,AttributeError):

pass

标准库中使用的其它异常:如ArithmeticError、EnvironmentError等

assert语句通常用于在程序中引用调试代码,语法格式为:

assert  condition [, expression]

如果condition条件满足,则assert不做任何操作;如果条件不满足,则assert作为参数实例化AssertionError并引发结果实例。

如果运行python时使用了-O优化选项,assert将是一个空操作,编译器不为assert语句生成代码 。运行python不使用-O选项,则__debug__内置变量为True,否则为False。

assert语句相当于下面代码:

if  __debug__:if not condition :raise  AssertionError, <expression>
In [17]: assert len(['my boy',12])>10    #条件len(['my boy',12])>10不满足依法默认异常
--------------------------------------------------------------------------
AssertionError                           Traceback (most recent call last)
<ipython-input-17-cc0a09de885b> in <module>()
----> 1 assert len(['my boy',12])>10
AssertionError:
In [18]: assert range(4)==[0,1,2,3]      #条件range(4)==[0,1,2,3]不满足依法默认异常
--------------------------------------------------------------------------
AssertionError                           Traceback (most recent call last)
<ipython-input-18-8b7aafe34e9e> in <module>()
----> 1 assert range(4)==[0,1,2,3]
AssertionError:
In [19]: assert 1==1                        #条件满足,无输出
In [20]: assert range(4)==[0,1,2,3],IOError #条件不满足,自定义异常为IOError
--------------------------------------------------------------------------
AssertionError                           Traceback (most recent call last)
<ipython-input-20-49011133d0d8> in <module>()
----> 1 assert range(4)==[0,1,2,3],IOErrorAssertionError: <class 'OSError'>
本文转自 梦想成大牛 51CTO博客,原文链接:http://blog.51cto.com/yinsuifeng/1922560,如需转载请自行联系原作者

Python运行环境与异常处理相关推荐

  1. python是软件吗-python运行环境是什么

    1.准备好安装包 1)上python官网下载python运行环境(https://www.python.org/downloads/),目前比较稳定的是python-3.5.2 2)上pycharm官 ...

  2. python教程是什么-python运行环境是什么

    1.准备好安装包 1)上python官网下载python运行环境(https://www.python.org/downloads/),目前比较稳定的是python-3.5.2 2)上pycharm官 ...

  3. python详细安装教程视频-如何安装Python运行环境Anaconda?(视频教程)

    本视频教程针对Windows 7平台,集成3.6版本Python的Anaconda录制. 根据我多次线下编程工作坊获得的反馈经验,发现Python初学者居然在环境安装步骤,就很可能遭受挫折. 如果没有 ...

  4. python安装环境安装_安装Python运行环境

    可以直接在python的官网下载相应操作系统平台的python安装包:https://www.python.org/downloads 点击下载后出现的安装界面,建议选中界面下方的Add Python ...

  5. python网页运行环境_Python小牛叔Web开发1:安装Visual Studio Code配置Python运行环境...

    本系列是Python小牛叔Web开发系列,以Django为框架介绍如何使用Python来开发Web应用,本教程适合对于Web开发有基本知识的入门者. 1.安装Visual Studio Code编辑器 ...

  6. sublime配置python运行环境

    1.sublime下载与插件管理 1.1 下载 官网地址:https://www.sublimetext.com/3 1.2 安装Package Control管理插件 使用ctrl + ` (感叹后 ...

  7. anaconda写python代码视频_如何安装Python运行环境Anaconda?(视频教程)

    本视频教程针对Windows 7平台,集成3.6版本Python的Anaconda录制. 根据我多次线下编程工作坊获得的反馈经验,发现Python初学者居然在环境安装步骤,就很可能遭受挫折. 如果没有 ...

  8. sublime说python找不到_sublime配置python运行环境

    1.sublime下载与插件管理 1.1 下载 1.2 安装Package Control管理插件 使用ctrl + ` (感叹后左边的那个键位),输入以下内容 import urllib.reque ...

  9. linux搭建python运行环境_centos运行.py centos5.5下搭建python开发运行环境 - Linux - 服务器之家...

    centos运行.py centos5.5下搭建python开发运行环境 发布时间:2017-04-28 来源:服务器之家 我们知道ython可以在windows.linux.android运行了,但 ...

最新文章

  1. 论文多次被拒怎么办?Best Paper Award获得者聊聊如何才能中顶会
  2. 学习记录-class与namespace的区别
  3. AtCoder Beginner Contest 177总结
  4. python mysql操作_Python的MySQL操作
  5. Java Integer类numberOfLeadingZeros()方法的示例
  6. java——获取一个应用程序运行的次数,如果超过5次,给出使用次数已到请注册的提示,并不要再运行程序
  7. php正则匹配域名不包含端口_3分钟短文 | PHP极速匹配子字符串,你是怎么做的?...
  8. kaffe java_Java虚拟机Kaffe的研究与实现
  9. Spring xml文件配置——创建bean的三种方式及作用范围、生命周期
  10. CentOS 安装SVN客户端
  11. 星星之火-38:LTE物理层无线资源与帧结构快速入门
  12. proftpd服务器搭建
  13. imagenet/ILSVRC2012数据集百度云及其具体分类
  14. 第一个被赋予公明身份的机器人_索菲亚成为首位被授予公民身份的机器人
  15. 用户不在sudoers文件中的解决方法
  16. 风力发电机 有功功率 无功功率 理论有功功率
  17. 靶机5 DC-4(过程超详细)
  18. python numpy中setdiff1d的用法
  19. Swift 周报 第四期
  20. Alibaba Sentinel是如何统计QPS实现限流的

热门文章

  1. php base64_decode 图片,php base64保存为图片,带格式解析
  2. ncurses下c语言定位光标,C指针原理教程之Ncurses介绍
  3. 图片马赛克去除工具_图片太多该如何进行排版呢?
  4. python计算时间装饰器_python 写一个计算运行时间的装饰器
  5. 福州3 2五年制计算机专业的学校,福州有哪些五年制大专
  6. mysql 表引擎 entity framework_EntityFramework之数据库以及表基本创建(一)
  7. .net core高并发_高并发下的Node.js与负载均衡
  8. 经济学原理 下载 曼昆_2021南开经济学考研全年规划
  9. 挖掘城市ip_不断挖掘IP价值,紧抓乐园经济新机遇!
  10. JDBC实现图书管理小案例