• 4月10日 python学习总结 模块和面向对象


    1、hashlib 

    1、什么叫hash:hash是一种算法,该算法接受传入的内容,经过运算得到一串hash值
     2、hash值的特点是:
    2.1 只要传入的内容一样,得到的hash值必然一样=====>要用明文传输密码文件完整性校验
    2.2 不能由hash值返解成内容=======》把密码做成hash值,不应该在网络传输明文密码
    2.3 只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的

    import hashlib
    
    m=hashlib.md5()
    m.update('hello'.encode('utf-8'))
    m.update('world'.encode('utf-8'))
    m.update('egon'.encode('utf-8'))
    print(m.hexdigest()) #3801fab9b8c8d9fcb481017969843ed5
    
    
    
    import hashlib
    
    m=hashlib.md5()
    m.update('h'.encode('utf-8'))
    m.update('e'.encode('utf-8'))
    m.update('lloworld'.encode('utf-8'))
    m.update('egon'.encode('utf-8'))
    print(m.hexdigest()) #3801fab9b8c8d9fcb481017969843ed5
    
    import hashlib
    m=hashlib.md5()
    with open(r'D:codeSH_fullstack_s1day18上节课复习','rb') as f:
        for line in f:
            m.update(line)
        hv=m.hexdigest()
    print(hv) #f2a3a94efd0809e8a9c5ac8794c4bb2d
              953cd74a08f4fbb7e69a4bda8dfad056
    
    
    
    密码加盐
    import hashlib
    pwd='alex3714'
    
    m=hashlib.md5()
    m.update('一行白鹭上青天')
    m.update(pwd.encode('utf-8'))
    m.update('天'.encode('utf-8'))
    
    m.update('小雨一米五'.encode('utf-8'))
    print(m.hexdigest())
    
    
    
    import hashlib
    
    m=hashlib.md5()
    m.update('helloworld'.encode('utf-8'))
    print(m.hexdigest()) #fc5e038d38a57032085441e7fe7010b0
    
    m=hashlib.sha256()
    m.update('helloworld'.encode('utf-8'))
    print(m.hexdigest()) #936a185caaa266bb9cbe981e9e05cb78cd732b0b3280eb944412bb6f8f8f07af
    
    
    m=hashlib.sha512()
    m.update('helloworld'.encode('utf-8'))
    print(m.hexdigest()) #1594244d52f2d8c12b142bb61f47bc2eaf503d6d9ca8480cae9fcf112f66e4967dc5e8fa98285e36db8af1b8ffa8b84cb15e0fbcf836c3deb803c13f37659a60
    

     强制加密  

    import hmac
    m=hmac.new('天王盖地虎,小鸡炖模块'.encode('utf-8'))
    m.update('alex3814'.encode('utf-8'))
    print(m.hexdigest())
    

    2、subprocess模块

    import subprocess
    import time
    
    time.sleep(500)
    
    
    # dos命令
    # tasklist | findstr python
    # taskkill /?
    #D:code>tasklist | findstr python
    # python.exe                   12360 Console                    1     11,024 K
    #
    # D:code>taskkill /F /PID 12360
    
    
    # linux系统(了解)
    # ps aux | grep python
    # kill -9 PID
    
    
    import os
    while True:
        cmd=input('>>>: ').strip()
        if not cmd:continue
        # print('%s run' %cmd)
        res=os.system(cmd)
    
        network.send(res)
    
    
    
    import os
    
    res=os.system('dixCVr')
    print('运行结果:',res)
    
    import subprocess
    
    obj=subprocess.Popen('dir',
                         shell=True,
                         stdout=subprocess.PIPE,
                         stderr=subprocess.PIPE
                         )
    
    print(obj)
    
    res1=obj.stdout.read()
    print('正确结果1111: ',res1)
    
    res2=obj.stdout.read()
    print('正确结果2222: ',res2) #只能取一次,取走了就没有了
    
    res2=obj.stderr.read()
    print('错误结果:',res2.decode('gbk'))

    3、configparser模块

    import configparser
    
    config=configparser.ConfigParser()
    config.read('my.ini')
    
    # secs=config.sections()
    # print(secs)
    
    # print(config.options('egon'))
    
    # age=config.get('egon','age')`
    # age=config.getint('egon','age')
    # print(age,type(age))
    
    # salary=config.getfloat('egon','salary')
    # print(salary,type(salary))
    
    b=config.getboolean('egon','is_beatifull')
    print(b,type(b))

    4、面向对象编程

    1、面向过程编程
    核心是”过程“二字,过程指的是解决问题的步骤,即先干什么再干什么
    基于该思想编写程序就好比在编写一条流水线,是一种机械式的思维方式

    优点:复杂的问题流程化、进而简单化
    缺点:可扩展性差

    2、面向对象
    核心”对象“二字,对象指的是特征与技能的结合体,
    基于该思想编写程序就好比在创造一个世界,你就是这个世界的上帝,是一种
    上帝式的思维方式

    优点:可扩展性强
    缺点:编程的复杂度高于面向过程

     

    5、对象与类

    ''''
    1、类
        对象是特征与技能的结合体,那类就是一系列对象相同的特征与技能的结合体
    
    2、在现实世界中:一定先有对象,后来随着人类文明的发展总结出的类
                对象是具体存在的,而类只是一种抽象概念
    
    3、在程序中,务必保证:先定义类,后调用类来产生对象
    
    
    现实生活中的对象:
        对象1:
            特征:
                school="Oldboy"
                name="马冬梅"
                age=18
                sex="female"
            技能:
                学习
                选课
    
        对象2:
            特征:
                school="Oldboy"
                name="甜蜜蜜"
                age=21
                sex="male"
            技能:
                学习
                选课
    
        对象3:
            特征:
                school="Oldboy"
                name="原石开"
                age=22
                sex="male"
            技能:
                学习
                选课
    
    现实生活中的老男孩学生类:
         相同的特征
                school="Oldboy"
         相同的技能
                学习
                选课
    '''
    #1、程序中的类
    class OldboyStudent:
        # 用变量表示特征
        school="Oldboy"
    
        #  用函数表示技能
        def learn(self):
            print('is learning...')
    
        def choose(self):
            print('choose course...')
    
        # print('======>')
    
    # 注意:在定义类的阶段会立刻执行类体内的代码,然后将产生的名字存放于类名称空间中
    # print(OldboyStudent.__dict__)
    # print(OldboyStudent.__dict__['school'])
    # print(OldboyStudent.__dict__['learn'])
    # OldboyStudent.__dict__['learn'](123)
    
    # print(OldboyStudent.school) # OldboyStudent.__dict__['school']
    # print(OldboyStudent.learn) # OldboyStudent.__dict__['learn']
    # OldboyStudent.learn('xxx')
    # OldboyStudent.learn('xxx')
    
    
    OldboyStudent.country='China'
    OldboyStudent.school='偶的博爱'
    
    del OldboyStudent.country
    print(OldboyStudent.__dict__)
    
    
    # 2、调用类,产生程序中的对象

      

  • 相关阅读:
    题目:有一对兔子,从出生第三个月起每个月都生一对兔子,小兔子长到第三个月后,每个月又生一对兔子,假如兔子都不死,问M个月时兔子的数量,M为键盘读入的正整数。(请用java语言作答)
    无聊游戏随笔--学院篇
    Java数组冒泡,选择,插入三种常用排序法及自带的快速排序法
    js写年月日三级下拉列表框
    查询避免Unknown column ‘xxx’ in ‘where clause’
    MyEclipse运行web程序报错,先检查这几点!
    Servlet开发之中线程安全问题
    取消Eclipse等号、分号、空格代码自动补全
    try/catch、finally语句的执行顺序测试
    02-MySQL双机热备的搭建
  • 原文地址:https://www.cnblogs.com/95lyj/p/8782135.html
Copyright © 2020-2023  润新知