python编程小提示
一.面向对象的约束
1.基于人为的约束
calss BaseMessage(object):def send(self,x):#必须继承BaseMessage,然后其中必须编写send方法.用于具体业务逻辑.raise NotImplementedError(".send() 必须被重写") class Email(BaseMessage):def send(self,x):#必须继承BaseMessage,然后其中必须编写send方法,用于完成具体逻辑return x obj = Email() obj,send(1)
如果Email类中未编写send(),仍继续使用继承父类的send(),则会报错打印 '.send() 必须重写'.父类中raise NotImplementedError有约束作用,提示子类必须编写send()方法.
2.抽象类和抽象方法的约束
from abc import ABCMeta,abstractmethodclass Base(metaclass=ABCMeta): # 定义抽象类def f1(self):print('酸辣')@abstractmethoddef f2(self): #抽象方法pass class Foo(Base):def f2(self):print('帅')obj = Foo() obj.f1()
Foo类只有编写父类抽象方法f2()时候,程序才可以正常进行,否则报错.
二.自定义异常处理
有时在编写代码的时候我们需要编写异常情况,用到Exception万能处理时,有一个小小的缺点,就是不能提醒我们此时程序报的是什么错误,所以有时候我们要针对一些情况自定义异常处理.
import os class ExistsError(Exception):pass class KeyInvalidError(Exception):pass def new_func(path,prev):response = {'code':1000,'data':None}try:if not os.path.exists():raise ExistsError()if not prev:raise KeyInvalidError()passexcept ExistsError as e:response['code'] = 1001response['data'] = '文件不存在'except KeyInvalidError as e:response['code'] = 1002response['data'] = '关键字为空'except Exception as e:response['code'] =1003response['data'] = '未知错误'return response print(new_func("C:\刘清扬\PyCharm 2018.1.4\python.py","we"))
这样我们就可以得到当'文件不存在','关键字为空'时出现的报错了.
class MyException(Exception):def __init__(self,code,msg):self.code = codeself.msg = msg try:raise MyException(100,'操作异常')except KeyError as obj:print(obj,1111) except MyException as obj:print(obj,222) #打印(100,'操作异常') 222 except Exception as obj:print(obj,3333)
三.为你的文件加密
在登录程序时,为了不让你的密码不被盗取,所以应该在储存密码时将明文改为密人,让隐私更安全.
import hashlibdef md5(pwd):obj = hashlib.md5() obj.update(pwd.encode('utf-8'))return obj.hexdigest() print(md5('21312e')) #打印d09c5c2fd74e97e2e9e98bbc8d0a3e4b
将密码21312e转为密文 09c5c2fd74e97e2e9e98bbc8d0a3e4b
还可以继续为我们的密码加盐(严)
import hashlib Salt = b'qwqw1212' #加严 def md5(pwd):obj = hashlib.md5(Salt)obj.update(pwd.encode('utf-8'))return obj.hexdigest() print(md5('21312e')) 打印81dda1ec99f8327b68659dbc56ee46c5
四.自定义日志
当我们写好程序给用户体验时,如果用户操作出报错信息,我们直接排查bug时将非常不方便.这时候我们编写一个日志功能,将报错详细录入,将会方便我们以后工作.
import logging logger1 = logging.basicConfig(filename='x1.txt',format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',datefmt='%Y-%m-%d %H:%M:%S',level=30) #当level大于等于30时,会被录入日志 logging.error('x4') logging.error('x5')
当我们想要将两个(或多个)报错信息分别录入两个(多个)时,需要自定义日志.
import logging # 创建一个操作日志的对象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('s1', level=logging.ERROR) logger1.addHandler(file_handler) logger1.error('123123123')# 在创建一个操作日志的对象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('s2', level=logging.ERROR) logger2.addHandler(file_handler2)logger2.error('666')
五.python2和python3的区别
字符串: python2:unicode v = u"root" 本质上是用unicode存储(万国码)
(str/bytes) v = "root" 本质上用字节存储
python3:str v = "root" 本质上是用unicode存储(万国码)
bytes v = b"root" 本质上用字节存储
编码: python2: 默认ascii 文件头可以修改, #-*- encoding:utf-8
python3: 默认utf-8 文件头也可以修改
继承: python2: 经典类/新式类(object)
python3:新式类
输入: python2: v = raw_input('')
python3 v = input('')
打印: python2 : print 'xx'
python3: print('xx')
转载于:https://www.cnblogs.com/liuqingyang/p/9395564.html
python编程小提示相关推荐
- 值得玩味儿的14个Python编程小技巧
全文共394个字,1张图,预计阅读时间5分钟. 最近的工作中经常使用Python编写一些基本解决一些NLP的小问题,在自己的工作日记里面也记录了不少的python编程中常用的小"Trick& ...
- python小游戏代码200行左右,python编程小游戏代码
大家好,本文将围绕python小游戏代码200行左右展开说明,小游戏程序代码python是一个很多人都想弄明白的事情,想搞清楚python编程小游戏代码需要先了解以下几个事情. 1.python简单小 ...
- python编程小游戏-python趣味入门——写几个常玩的游戏
文档介绍 利用python写"猜数字","猜词语","谁是卧底"这三个游戏,从而快速掌握python编程的入门知识,包括python语法/列 ...
- python编程小游戏-python编程游戏有哪些
python编程游戏有哪些?下面给大家介绍几款由Python开发的游戏: 1.Github上面有个项目Free Python Games,里面集合了不少的Python开发的小游戏,能玩,也适合新手用来 ...
- python编程小游戏-10分钟用Python编写一个贪吃蛇小游戏,简单
贪吃蛇,大家应该都玩过.小编当初第一次接触贪吃蛇的时候 ,还是能砸核桃的诺基亚上,当时玩的不亦乐乎.今天,我们用Python编程一个贪吃蛇游戏,下面我们先看看效果: 好了,先介绍一个思路 所有的游戏最 ...
- python能做什么游戏-有趣又好玩的9个Python编程小游戏、简直太棒了
打开搜狗搜索APP,查看更多精彩资讯 学习编程对大多数人来说是枯燥而无聊,大家有时候往往会觉得精神崩溃,提不起学习的兴趣,因此从入门到放弃,面临这种困境该怎么办呢? 这时候就有一些大牛设计出用游戏来学 ...
- python小游戏合集-9个Python编程小游戏,有趣又好玩,简直太棒了
前言 学习编程对大多数人来说是枯燥而无聊,大家有时候往往会觉得精神崩溃,提不起学习的兴趣,因此从入门到放弃(笑哭),面临这种困境该怎么办呢?这时候就有一些大牛设计出用游戏来学习编程知识点,所以,这世界 ...
- python简单游戏程序设计_有趣又好玩的9个Python编程小游戏、简直太棒了
打开搜狗搜索APP,查看更多精彩资讯 学习编程对大多数人来说是枯燥而无聊,大家有时候往往会觉得精神崩溃,提不起学习的兴趣,因此从入门到放弃,面临这种困境该怎么办呢? 这时候就有一些大牛设计出用游戏来学 ...
- 9个Python编程小游戏,有趣又好玩,简直太棒了
前言 学习编程对大多数人来说是枯燥而无聊,大家有时候往往会觉得精神崩溃,提不起学习的兴趣,因此从入门到放弃(笑哭),面临这种困境该怎么办呢?这时候就有一些大牛设计出用游戏来学习编程知识点,所以,这世界 ...
最新文章
- day16-筛选器以及Tab菜单示例
- MySQL几个特别语法示例
- 深度解析KGDB调试Linux模块和内核
- 手工将python程序发布为exe执行程序 [转]
- 【鬼网络】之PXE高效批量网络装机
- 如何训练孩子上厕所(初级篇)
- log4j2 pattern 行号_Springboot整合log4j2日志全解总结
- 用CSS伪类制作一个不断旋转的八卦图?
- 蓝牙调试工具如何使用_使用此有价值的工具改进您的蓝牙项目:第2部分!
- 一步一步学python爬虫_初学Python之爬虫的简单入门
- mysql使用条件限制乐观锁_使用Mysql乐观锁解决并发问题
- Progressive Scramble 复杂模拟
- Web Components 系列(五)—— 关于 Templates
- JSP教程第3讲笔记
- linux Vi操作和使用方法详解
- python强度公式计算_python – 黑体谱的普朗克斯公式
- iphone win7无法识别_小编操作win7系统电脑不能识别iphone苹果设备的设置教程
- 垃圾小白羊的leetcode刷题记录6
- JGG | 中科院微生物研究所王军团队发现肠系膜淋巴系统可能为肠-肝轴第二通路...
- [转]使用jenkins实现持续集成