11576306-a8402191f0aec4c2.png
异常处理
一、系统异常
1.捕捉异常
结构是:
try:
可能引起异常的代码
except:
对异常的处理代码
try:
print(name)
except: #所有异常
print ('error')
2.捕获多个异常
try:
print(name)
except (IOError, NameError):
print ('error')
3.异常描述信息
try:
print(name)
except NameError as ret:
print ('error : %s', ret)
4.捕获所有异常
try:
print(name)
except Exception as ret: #all exception error
print ('error : %s', ret)
5.try…finally…
try:
print(name)
except Exception as ret:
print ('error : %s'% ret)
else:
print ('没有任何异常')
finally:
print ('无乱是否有异常,最后都要执行这里')
二、抛出自定义的异常
# python 2.X -raw_input python 3.X -input
# coding=utf-8
class MyError(Exception):
'''self error'''
def __init__(self, length, least):
self.length = length
self.least = least
def main():
s = raw_input('please input your name :')
try:
if len(s) < 3:
raise MyError(len(s), 3)
except MyError as rest:
print ('input len = %s, min order %d' % (rest.length, rest.least))
else:
print ('no error')
模块
1、Python中的模块
import os
print (os.__file__)
2、import
import math
#这样会报错
print sqrt(2)
#这样才能正确输出结果
print math.sqrt(2)
有时候我们只需要用到模块中的某个函数,只需要引入该函数即可,此时可以用下面方法实现:
from 模块名 import 函数名1, 函数名2
不仅可以引入函数,还可以引入一些全局变量、类等
3、from … import *
import a as t
pass
私有化
xx: 公有变量
_x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问
_xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到)
xx:双前后下划线,用户名字空间的魔法对象或属性。例如:init , __ 不要自己发明这样的名字
xx:单后置下划线,用于避免与Python关键词的冲突
通过name mangling(名字重整(目的就是以防子类意外重写基类的方法或者属性)如:_Class__object)机制就可以访问private了。