• day24


    内容回顾

    # 单例模式 是一种设计模式
    # 什么是单例模式
    # 单例的应用场景
    # __new__方法 :创建实例的 并且在init之前工作
    # logging模块
    # 记录日志的
    # 用户 :
    # 程序员 :
    # 统计用的
    # 用来做故障排除的 debug
    # 用来记录错误,完成代码的优化的
    # logging.basicconfig
    # 使用方便
    # 不能实现 编码问题;不能同时向文件和屏幕上输出
    # logging.debug,logging.warning
    # logger对象
    # 复杂
    # 创建一个logger对象
    # 创建一个文件操作符
    # 创建一个屏幕操作符
    # 创建一个格式

    # 给logger对象绑定 文件操作符
    # 给logger对象绑定 屏幕操作符
    # 给文件操作符 设定格式
    # 给屏幕操作符 设定格式

    # 用logger对象来操作
    # import logging
    #
    # logger = logging.getLogger()
    # fh = logging.FileHandler('log.log')
    # sh = logging.StreamHandler()
    # logger.addHandler(fh)
    # logger.addHandler(sh)
    # formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    # fh.setFormatter(formatter)
    # sh.setFormatter(formatter)
    # logger.warning('message')

    # collections模块
    # OrderedDict
    # from collections import OrderedDict
    # odic = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
    # print(odic)
    # for k in odic:
    # print(k,odic[k])

    # defaultdict
    # deque
    # namedtuple
    # from collections import namedtuple # 可命名元组
    # Course = namedtuple('Course',['name','price','teacher'])
    # python = Course('python',19800,'alex')
    # print(python)
    # print(python.name)
    # print(python.price)
    # 创建一个类,这个类没有方法,所有属性的值都不能修改
    # 什么是模块,什么是包
    # 什么是模块
    # py文件 写好了的 对程序员直接提供某方面功能的文件
    # import
    # from import 名字

    # 什么是包
    # 文件夹 存储了多个py文件的文件夹
    # 如果导入的是一个包,这个包里的模块默认是不能用的
    # 导入一个包相当于执行 __init__.py文件中的内容

    # 项目名
    # bin start
    # import os
    # import sys
    # base_path = os.path.dirname(os.path.dirname(__file__))
    # sys.path.append(base_path)

    # from src import core
    # conf 配置 settings
    # src 业务逻辑
    # student.py
    # from src import core
    # core.py
    # from conf import settings
    # db 数据文件
    # lib 扩展模块
    # log 日志文件

    # 补充
    # 栈 Stack
    #后进先出是栈 lifo
    # 队列 Queue
    # 先进先出是队列 fifo

    # 反射
    # hasattr
    # getattr
    ab = 'test'

    # import demo
    # print(getattr(demo,'a'))
    # print(getattr(demo,'a'))

    import demo
    import sys
    # print(demo)
    # print(sys.modules)
    # print(demo is sys.modules['demo'])
    # print(getattr(sys.modules['demo'],'a'))
    print(getattr(sys.modules[__name__],'ab'))
    # '__main__': <module '__main__' from 'D:/code/day24/1.内容回顾.py'>
    # setattr
    # delattr

    # 反射
    # 通过 对象 来获取 实例变量、绑定方法
    # 通过 类 来获取 类变量、类方法、静态方法
    # 通过 模块名 来获取 模块中的任意变量(普通变量 函数 类)
    # 通过 本文件 来获取 本文件中的任意变量
    # getattr(sys.modules[__name__],'变量名')

    # Foo抽象类/接口类
    # 就是给字类一个规范,让子类必须按照抽象类的规范来实现方法

    # class Foo:
    # def func(self):
    # raise NotImplementedError
    #
    # class Son(Foo):
    # def func(self):
    # pass
    #
    # s = Son()
    # s.func()

    面向对象的继承

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    class A:
    pass
    # def func(self):
    # print('a')
    class B(A):
    pass
    # def func(self):
    # print('b')
    class C(A):
    def func(self):
    print('c')
    class D(B,C):
    pass
    # def func(self):
    # print('d')
    d = D()
    d.func()
    print(D.mro())
    # DBCA
    # DBAC

    内容整理

    # 模块
    # os 和操作系统打交道的 - 计算文件夹的大小
    # import os
    # print(os.path.getsize('pack'))
    # 文件
    # 文件夹
    # listdir ,walk
    # 路径
    # sys
    # sys.path 模块搜索路径 一个模块是否能被导入 全看sys.path中是不是有这个模块所在的路径
    # sys.argv 获取命令行的参数 python c://aaa.py remove 文件路径
    # sys.modules 存储了当前程序中用到的所有模块,反射本文件中的内容
    # datetime
    # now() datetime对象
    # utc() 当前的英国伦敦的时间
    # strftime('%Y-%m-%d %H:%M:%S') 格式化时间
    # strptime('2019-1-1 10:23:23','%Y-%m-%d %H:%M:%S')) 获取到一个datetime对象
    # timedelta(days=140) 时间的加
    # fromtimestamp(时间戳时间) 时间戳转datetime
    # timestamp(datetime对象) datetime转时间戳
    # from datetime import datetime
    # dt = datetime.now()
    # print(datetime.timestamp(dt))
    # time
    # time() 时间戳时间
    # sleep(n) 让程序在这暂停n秒
    # hashlib 摘要算法模块
    # 密文验证
    # 校验文件的一致性
    # md5
    # sha
    # import hashlib
    # md5 = hashlib.sha1('盐'.encode())
    # md5.update(b'str')
    # print(md5.hexdigest())
    # 863c5545d295eef3dffe556a141a48b30565c763
    # 序列化 把其他数据类型转换成 str/bytes类型
    # 反序列化 str/bytes类型 转换回去
    # json 所有的语言都支持
    # json格式 :
    # 1.所有的字符串都是双引号
    # 2.最外层只能是列表或者字典
    # 3.只支持 int float str list dict bool
    # 4.存在字典字典的key只能是str
    # 5.不能连续load多次
    # pickle 只支持python语言
    # 1.几乎所有的数据类型都可以写到文件中
    # 2.支持连续load多次

    # random
    # randint
    import random
    # print(random.uniform(1,5))
    # print(random.choice([1,2,3,4,5])) # 验证码 抽奖
    # print(random.sample([1,2,3,4],3)) # 一个奖项抽取多个人
    # choice
    # sample
    # shuffle # 洗牌 算法

    # logging
    # 两种配置方式
    # basicconfig
    # logger对象
    # collections
    # OderedDict
    # namedtuple
    # deque 双端队列
    # defaultDict 默认字典,可以给字典的value设置一个默认值
    # shutil
    # import shutil
    # shutil.make_archive() 压缩文件
    # shutil.unpack_archive() 解压文件
    # shutil.rmtree() 删除目录
    # shutil.move() 重命名 移动文件
    # getpass 在命令行密文显示输入的内容
    # copy.deepcopy
    # importlib
    # importlibimport importlib
    # importlib.import_module('模块名')
    # os = __import__('os')
    # print(os.path.isdir('D:codeday24pack'))
    # print(os.path.isfile('D:codeday24pack'))
    # functools
    # reduce(add,iterable)

    # 面向对象
    # 基础概念
    # 什么是类 : 具有相同方法和属性的一类事物
    # 什么是对象、实例 : 一个拥有具体属性值和动作的具体个体
    # 实例化 :从一个类 得到一个具体对象的过程
    # 组合
    # 一个类的对象作为另一个类对象的实例变量
    # python是课程类的对象
    # 晶晶是学生类的对象
    # 晶晶.course = python
    # 三大特性
    # 继承
    # 所有的查找名字(调用方法和属性)都是先找自己的,自己没有找父类
    # 如果自己和父类都有,希望自己和父类都调用,super()/指定类名直接调
    # 父类、基类、超类
    # 子类、派生类
    # 单继承 :字类可以使用父类的方法
    # 多继承
    # 查找顺序
    # 深度优先
    # 广度优先
    # 多态
    # 一个类表现出来的多种状态 --> 多个类表现出相似的状态
    # vip_user
    # 支付
    # 浏览商品
    # svip_user
    # 支付
    # 浏览商品
    # 鸭子类型
    # vip_user svip_user
    # list 和 tuple
    # 封装
    # 广义的封装 :类中的成员
    # 狭义的封装 :私有成员
    # __名字
    # 只能在类的内部使用,既不能在类的外部调用,也不能在子类中使用
    # _类名__名字

    # class A:
    # def __func(self):
    # print('A')
    #
    # class B(A):
    # def func(self):
    # self.__func()
    # B()

    # 类成员
    # 类变量
    # 绑定方法
    # 特殊成员
    # 类方法 classmethod
    # 静态方法 staticmethod
    # 属性 property
    # 双下方法/魔术方法/内置方法
    # __str__
    # __new__ 构造方法
    # __init__ 初始化方法
    # __call__ 源码中很容易写这个用法
    # __enter__ __exit__ with上下文管理
    # __getitem__
    # __settitem__
    # __delitem__
    # __add__
    # __iter__
    # __dict__

    # 相关内置函数
    # isinstance 对象和类
    # issubclass 类和类
    # type 类型 类 = type(对象)
    # super 遵循mro顺序查找上一个类的

    # 新式类和经典类
    # py2 继承object就是新式类
    # 默认是经典类
    # py3 都是新式类,默认继承object

    # 新式类
    # 继承object
    # 支持super
    # 多继承 广度优先C3算法
    # mro方法
    # 经典类
    # py2中不继承object
    # 没有super语法
    # 多继承 深度优先
    # 没有mro方法

    检验文件的一致性

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-

    # 两个文件的md5值是不是相同
    import hashlib

    # md5 = hashlib.md5()
    # md5.update('hello'.encode())
    # md5.update(',wusir'.encode())
    # 46879507bf541e351209c0cd56ac160e
    # 46879507bf541e351209c0cd56ac160e
    # print(md5.hexdigest())

    # 两个文件
    # md5 = hashlib.md5()
    # md5.update(文件1 的内容)
    # md5.hexdigest()

    # md5 = hashlib.md5()
    # md5.update(文件2 的内容)
    # md5.hexdigest()

  • 相关阅读:
    Synplify9.6.2破解(转帖)
    让博客园博客自动生成章节目录索引
    如何学好FPGA
    verilog 不可综合语句
    在FPGA中使用for循环一定浪费资源吗?
    在verilog中调用VHDL模块
    C#和Java中执行SQL文件脚本的代码(非常有用)
    C#通用JSON帮助类
    公共的Json操作C#类
    Calendar.NET
  • 原文地址:https://www.cnblogs.com/usherwang/p/12968719.html
Copyright © 2020-2023  润新知