一.面向对象的约束

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编程小提示相关推荐

  1. 值得玩味儿的14个Python编程小技巧

    全文共394个字,1张图,预计阅读时间5分钟. 最近的工作中经常使用Python编写一些基本解决一些NLP的小问题,在自己的工作日记里面也记录了不少的python编程中常用的小"Trick& ...

  2. python小游戏代码200行左右,python编程小游戏代码

    大家好,本文将围绕python小游戏代码200行左右展开说明,小游戏程序代码python是一个很多人都想弄明白的事情,想搞清楚python编程小游戏代码需要先了解以下几个事情. 1.python简单小 ...

  3. python编程小游戏-python趣味入门——写几个常玩的游戏

    文档介绍 利用python写"猜数字","猜词语","谁是卧底"这三个游戏,从而快速掌握python编程的入门知识,包括python语法/列 ...

  4. python编程小游戏-python编程游戏有哪些

    python编程游戏有哪些?下面给大家介绍几款由Python开发的游戏: 1.Github上面有个项目Free Python Games,里面集合了不少的Python开发的小游戏,能玩,也适合新手用来 ...

  5. python编程小游戏-10分钟用Python编写一个贪吃蛇小游戏,简单

    贪吃蛇,大家应该都玩过.小编当初第一次接触贪吃蛇的时候 ,还是能砸核桃的诺基亚上,当时玩的不亦乐乎.今天,我们用Python编程一个贪吃蛇游戏,下面我们先看看效果: 好了,先介绍一个思路 所有的游戏最 ...

  6. python能做什么游戏-有趣又好玩的9个Python编程小游戏、简直太棒了

    打开搜狗搜索APP,查看更多精彩资讯 学习编程对大多数人来说是枯燥而无聊,大家有时候往往会觉得精神崩溃,提不起学习的兴趣,因此从入门到放弃,面临这种困境该怎么办呢? 这时候就有一些大牛设计出用游戏来学 ...

  7. python小游戏合集-9个Python编程小游戏,有趣又好玩,简直太棒了

    前言 学习编程对大多数人来说是枯燥而无聊,大家有时候往往会觉得精神崩溃,提不起学习的兴趣,因此从入门到放弃(笑哭),面临这种困境该怎么办呢?这时候就有一些大牛设计出用游戏来学习编程知识点,所以,这世界 ...

  8. python简单游戏程序设计_有趣又好玩的9个Python编程小游戏、简直太棒了

    打开搜狗搜索APP,查看更多精彩资讯 学习编程对大多数人来说是枯燥而无聊,大家有时候往往会觉得精神崩溃,提不起学习的兴趣,因此从入门到放弃,面临这种困境该怎么办呢? 这时候就有一些大牛设计出用游戏来学 ...

  9. 9个Python编程小游戏,有趣又好玩,简直太棒了

    前言 学习编程对大多数人来说是枯燥而无聊,大家有时候往往会觉得精神崩溃,提不起学习的兴趣,因此从入门到放弃(笑哭),面临这种困境该怎么办呢?这时候就有一些大牛设计出用游戏来学习编程知识点,所以,这世界 ...

最新文章

  1. day16-筛选器以及Tab菜单示例
  2. MySQL几个特别语法示例
  3. 深度解析KGDB调试Linux模块和内核
  4. 手工将python程序发布为exe执行程序 [转]
  5. 【鬼网络】之PXE高效批量网络装机
  6. 如何训练孩子上厕所(初级篇)
  7. log4j2 pattern 行号_Springboot整合log4j2日志全解总结
  8. 用CSS伪类制作一个不断旋转的八卦图?
  9. 蓝牙调试工具如何使用_使用此有价值的工具改进您的蓝牙项目:第2部分!
  10. 一步一步学python爬虫_初学Python之爬虫的简单入门
  11. mysql使用条件限制乐观锁_使用Mysql乐观锁解决并发问题
  12. Progressive Scramble 复杂模拟
  13. Web Components 系列(五)—— 关于 Templates
  14. JSP教程第3讲笔记
  15. linux Vi操作和使用方法详解
  16. python强度公式计算_python – 黑体谱的普朗克斯公式
  17. iphone win7无法识别_小编操作win7系统电脑不能识别iphone苹果设备的设置教程
  18. 垃圾小白羊的leetcode刷题记录6
  19. JGG | 中科院微生物研究所王军团队发现肠系膜淋巴系统可能为肠-肝轴第二通路...
  20. [转]使用jenkins实现持续集成

热门文章

  1. idea中如何打开RunDashboard窗口,微服务最实用设置
  2. 最优的去重处理——HashSet去重
  3. 2022-2028年中国PVC糊树脂行业市场深度分析及市场规模预测报告
  4. Mysql生成UUID
  5. 第一个SpringBoot程序(详细解析Grounp、Artifact等项目信息含义)
  6. TVM将深度学习模型编译为WebGL
  7. 什么是OpenMAX技术分析OpenMAX
  8. 用户自定义协议client/server代码示例
  9. 基于TensorRT 3的自动驾驶快速INT8推理
  10. 2021年大数据Kafka(二):❤️Kafka特点总结和架构❤️