小学生绞尽脑汁也学不会的python(异常,约束,MD5加密,日志处理)

异常处理(处理)

  

1.产生异常.raise 异常类(),抛出异常
2. 处理异常:
            try:
xxxxx # 尝试执行的代码.
except 异常类 as 变量: # 出现错误的时候. 捕获到异常
xxxxxx # 处理异常ch try:
"""操作"""
except Exception as e:
"""保护的父类,可以捕获所有异常"""
else:
"""保护不抛出异常的代码,当try中无异常的时候执行"""
finally:
"""最后总要执行我"""
def chu(a,b):
return a/b
try: #尝试着运行
ret = chu(10,0)
print(ret)
except Exception as e: #Exception 表示所有的错误
print("除数不能是0") try:
print("各种操作...")
except ZeroDivisiongError as e:
print("除数不能是0")
except FileNotFoundError as e:
print("文件不存在")
except Exception as e:
print("其他错误")

  

程序先执⾏操作, 然后如果出错了会走except中的代码. 如果不出错, 执⾏else中
# 的代码. 不论处不出错. 最后都要执⾏finally中的语句. ⼀般我们⽤try...except就够⽤了. 顶多
# 加上finally. finally⼀般⽤来作为收尾⼯作.
3. 自定义异常
继承Exception,那这个类就是一个异常类
lass GenderError(Exception):
pass
class Person:
def __init__(self,name,gender):
self.name = name
self.gender = gender def nan_zao_tang_xi_zao(person):
if person.gender != "男":
raise GenderError("性别不对,这里是澡堂子") p1 = Person("alex","男")
p2 = Person("eggon","蛋") try:
nan_zao_tang_xi_zao(p1)
nan_zao_tang_xi_zao(p2)
except GenderError as e:
print(e)
except Exceptiong as e:
print("反正报错了")

  

4. 堆栈信息
import traceback
traceback.format_exc() 获取堆栈信息.处理异常:
mport traceback
"""继承Exceptiong.那个类就是一个异常类"""
class GenderError(Exception):
pass
class Person:
def __init__(self,name,gender):
self.name = name
self.gender = gender
def nan_zao_tang_xi_zao(person):
if person.gender != "男":
raise GenderError("性别不对,这里是男澡堂子")
p1 = Person("alex", "男")
p2 = Person("eggon", "蛋") """处理异常"""
try:
nan_zao_tang_xi_zao(p1)
nan_zao_tang_xi_zao(p2)
except GenderError as e:
val = traceback.format_exc() #获取到堆栈信息
print(e)
print(val)
except Exception as e:
print("反正报错了")

  ************************************************************************************************************

 约束(难)
约束是对子类进行的约束。
一。 通过抛异常(简单)
在父类中给出一个方法。 这个方法中什么都不写。 就抛异常。 NotImplementError()
在子类中把上述的方法进行重写。
重写:子类重新定义父类中的方法。
lass Base:
def login(self):
raise Exception("你没有实现login方法()")
class Normal(Base):
def login(self):
pass
class Member(Base):
def denglu(self):
pass
class Admin(Base):
def login(self):
Pass def login(obj):
print("准备验证码...")
obj.login()
print("进入主页...") n = Normal()
m = Member()
a = Admin()
login(n)
login(m)
login(a)

  

二。 抽象类和抽象方法(java, c
# )
接口: 类中都是抽象方法.
from abc import ABCMeta, abstractmethod 抽象方法: 抽象方法不用给出方法体.写个pass就行了
抽象类:
语法:类(metaclass=ABCMeta)
概念: 如果类中包含了抽象方法.这个类一定是抽象类
特点: 抽象类一般不创建对象.
抽象类中可以存在正常方法 可以约束子类必须实现抽象方法
from abc import ABCMeta,abstractmethod

class IGame(metaclass=ABCMeta):
@abcstractmenthod
def piay(self):
pass
def turn_off(self):
print("破几把游戏,")
class DNFGame(IGname):
def play(delf):
print("dnf的玩法") dg = DNFGame()
dg.play()

  *************************************************************************************************************************

         MD5加密
MD5加密:不可逆
引入模块
hashlib
1
创建md5对象
2.
把加密信息交给md5对象
3.
获取密文
mport hashl
obj = hashlib.md5()
obj.update("alex".encode("utf-8")) # 加密的必须是字节
miwen = obj.hexdigest()
print(miwen) # 534b44a19bf18d20b71ecc4eb77c572f import hashlib def my_md5(s):
obj = hashlib.md5(b"fjlksajflkjasfsalwer123dfskjf")
obj.update(s.encode("utf_8"))
return minwen username = input("请输入用户名:")
password = input("请输入密码:") if username == "wusir" and my_md5(password) =="99fca4b872fa901aac30c3e952ca786d"
print("成功")
else:
print("失败")

  **********************************************************************************************************************************************************

日志处理(重要, 简单)
引入logging模块
简单配置即可(basicConfig 单一日志文件 fileHandler 文件助手可以实现多文件操作)
日志级别:
CRITICAL 最高的
ERRO 40
WARN 30
INFO 20
DEBUG 10

import logging

# logging.basicConfig(filename='app.log',
# format='%(asctime)s - %(name)s - %(levelname)s - %(module)s: %(message)s',
# datefmt='%Y-%m-%d %H:%M:%S',
# level=40) # level 设置级别. 当你的信息的级别>=level的时候才会写入日志文件, 默认30
#
# # CRITICAL = 50
# # FATAL = CRITICAL
# # ERROR = 40
# # WARNING = 30
# # WARN = WARNING
# # INFO = 20
# # DEBUG = 10
# # NOTSET = 0
# # 写日志
# # logging.critical("我是critical")
# # logging.error("我是error")
# # logging.warning("我是警告")
# # logging.info("我是基本信息")
# # logging.debug("我是调试")
# # logging.log(2, "我是自定义")
# import traceback
#
# for i in range(20):
# try:
# if i % 3 == 0:
# raise FileNotFoundError("我是FileNotFountException")
# elif i % 3 == 1:
# raise StopIteration()
# elif i % 3 == 2:
# raise KeyError()
#
# except FileNotFoundError as e:
# val = traceback.format_exc()
# logging.error(val)
# except StopIteration as e:
# val = traceback.format_exc()
# logging.error(val)
# except KeyError as e:
# val = traceback.format_exc()
# logging.error(val)
# except Exception as e:
# val = traceback.format_exc()
# logging.error(val) # 多文件日志处理
# 创建⼀个操作⽇志的对象logger(依赖FileHandler)
file_handler = logging.FileHandler('l1.log', 'a', encoding='utf-8')
# 设置日志文件内容的格式
file_handler.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s"))
logger1 = logging.Logger('A', level=40)
logger1.addHandler(file_handler)
# 记录日志
logger1.error('我是A系统') # 再创建⼀个操作⽇志的对象logger(依赖FileHandler)
file_handler2 = logging.FileHandler('l2.log', 'a', encoding='utf-8')
file_handler2.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s -%(levelname)s -%(module)s: %(message)s"))
logger2 = logging.Logger('B', level=40)
logger2.addHandler(file_handler2)
# 记录日志
logger2.error('我是B系统')

  

小学生绞尽脑汁也学不会的python(异常,约束,MD5加密,日志处理)的更多相关文章

  1. 小学生绞尽脑汁也学不会的python(反射)

    小学生绞尽脑汁也学不会的python(反射) 1. issubclass, type, isinstance issubclass 判断xxxx类是否是xxxx类的子类 type 给出xxx的数据类型 ...

  2. 小学生绞尽脑汁也学不会的python(面对对象-----类与类之间的关系)

    小学生绞尽脑汁也学不会的python(面对对象-----类与类之间的关系 1. 依赖关系. 最轻的一种关系 在方法中引入另一个类的对象 class Elephant: def __init__(sel ...

  3. 小学生绞尽脑汁也学不会的python(面对对象-----成员)

    小学生绞尽脑汁也学不会的python(面对对象-----成员) 成员 class Person: def __init__(self, name, num, gender, birthday): # ...

  4. 小学生绞尽脑汁也学不会的python(初识面对对象)

    小学生绞尽脑汁也学不会的python(初识面对对象) 一. 面向对象思想 1. 面向过程. 重点在"过程". 按照实物的发展流程. 先干嘛,后干嘛, 最后干嘛.... 优点: 简单 ...

  5. 异常处理,约束,MD5加密日志处理

    程序运行过程中产生的错误, 不正常 def chufa(a, b): try: # 尝试执行xxx代码 ret = a/b # 如果这里出现了错误. 异常. 系统内部会产生一个异常对象. 系统会把这个 ...

  6. python文件的md5加密方法

    本文实例讲述了python文件的md5加密方法.分享给大家供大家参考,具体如下: 一.简单模式: from hashlib import md5 def md5_file(name): m = md5 ...

  7. Python 约束 , 自定义异常 , 加密 , 日志

    约束 约束 , 约束其派生类:  保证派生类中必须编写send方法 , 不然执行可能就会报错 Python中  语法: class BaseMessage(object): def send(self ...

  8. python--类的约束,异常处理,MD5加密,日志处理logging模块

    1.类的约束 在开发中,如果项目经理需要对类进行约束,可以有两种方式 1. 对子类进行约束 Base: #对子类进行约束,必须重写这个方法 # 在工作中发现了NotImplementedError之后 ...

  9. python里面的MD5加密 ---# hashlib包的使用

    在应用程序的接口里,常用到签名:其中签名里用到MD5加密,这里用hashlib实现 hashlib 概念:Hash,译做"散列",也有直接音译为"哈希"的.把任 ...

随机推荐

  1. MySQL导入到SQLServer

    Mysql是在Linux环境服务器,MSSQL在windows服务器上 1.在MSServer中安装VPN 2.为VPN配置Mysql服务器账号 3.账号中的文件 4.在MSSQL服务器上安装mysq ...

  2. 企业级工作流解决方案(十三)--集成Abp和ng-alain--数据库读写分离

    说到程序里面数据库管理,无非就是两件事情,一是数据库操作,对于数据库的操作,各种程序语言都有封装,也就是所谓的ORM框架,.net 方向一般用得比较多和就是.net framework和dapper, ...

  3. 【codeforces 799C】Fountains

    [题目链接]:http://codeforces.com/contest/799/problem/C [题意] 你有两种不同的货币; 余额分别为c和d 然后有n种商品; 每种商品只能由两种货币中的某一 ...

  4. (0)资料官网【从零开始学Spring Boot】

    Spring Boot官网:http://projects.spring.io/spring-boot/ Eclipse官网:http://www.eclipse.org/ Maven官网:http: ...

  5. struts配置

    创建struts2的应用,首先应如前面所示要搭建好环境.jar包的导入和web.xml配置这里不在写出来.  如上所示,struts2中是采用<package>元素来管理Action的,包 ...

  6. hdu 1542 线段树之扫描线之面积并

    点击打开链接 题意:给你n个矩形,求它们的面积,反复的不反复计算 思路:用线段树的扫描线完毕.将X坐标离散化后,从下到上扫描矩形,进行各种处理,看代码凝视把 #include <stdio.h& ...

  7. M​a​y​a​ ​2​0​1​2​ ​破​解​安​装​全​图​文​教​程

    在学习U3D的过程中.我们要用到Maya这个工具,(当然你也能够用其它类似的), 我在安装破解 Maya 2012 的过程其中,走了一些弯路.通过搜索发现,网上关于Maya 破解的文章大多语焉不详,为 ...

  8. 使用android.graphics.Path类自绘制PopupWindow背景

    PopupWindow简单介绍 PopupWindow是悬浮在当前activity上的一个容器,用它能够展示随意的内容. PopupWindow跟位置有关的API有以下几个: showAsDropDo ...

  9. ACM/OI 出题用

    之前出题,很苦恼出数据和检查程序,因为很多繁琐的工作,还很可能小手一抖出问题. 最近又在出题...想起之前的对拍脚本,感觉不能更方便,于是撸了一套出题用的小工具,也学习了一点点的DOS命令 首先是输入 ...

  10. VS头部自动注释

    1.找你的vs安装目录, 比如我的是在D盘D:\Program Files\Microsoft\VS2013\Common7\IDE 2.然后点击右上角的 搜索. 搜索Class.cs文件 3.把里面 ...