python 名字空间&装饰器&时间模块

名字空间

1. 三种
    Local: 局部命名空间
        查看: locals()

    Global : 全局命名空间, 只要在全局命名空间中的内容到处都能使用
        查看: globals()
        __name__: 模块名, 如果是主执行文件 值为 __main__

        __builtins__: 内建名字空间对象,用于查看内建名字空间中的内容的

        __file__: 当前文件的绝对路径
            # 动态获取当前文件所在的目录
            import os
            print(os.path.dirname(__file__))

    Built-in: 内建命名空间, 内建中的所有内容到处都能使用
        查看: dir(__builtins__)
        内容: int,list,tuple,str,max,min,sum,range,len,super,locals,globals

作用域

1. 作用域的分类
    局部作用域(Local): 作用范围为当前函数内容
    闭包作用域(Enclosing): 作用范围为函数中的子函数中(函数嵌套)
    全局作用域(Global): 作用范围全局
    内建作用域(Builtin): 作用范围全局

    作用域: 指成员(变量,函数,,方法)的使用范围

2. 成员的查找顺序: L>E>G>B

3. 指定操作对应作用域中的成员
    在函数内修改全局的成员, 使用 global 全局变量名 引入之后才能修改
    在子函数中修改闭包变量, 使用 nonlocal 闭包变量 引入闭包变量才能修改

装饰器

1. 概念:本质也是一个函数, 用于加强原函数, 这个函数就是装饰器
    备注: 原函数功能不变的情况进行加强

2. 如何实现装饰器函数
    1. 定义一个函数
    2. 接收原函数作为参数
    3. 新增新功能
3. 装饰器的使用
    def 装饰器函数(原函数):
        pass

    @装饰器函数   # 语法糖 类方法,静态方法 装饰器的使用
    def 原函数():
        pass

随机数模块

导入随机模块
import random

接口名称	          类型	               说明
random.random()	     实数相关	  用于生成一个01的随机浮点数: [0, 1)
random.uniform(a,b)		         生成[a,b][b,a]之间的均匀分布随机浮点数
random.randint(a,b)	 整数相关	  生成[a,b]的随机整数,要求a < b
random.randrange(a,b)		     生成[a,b)的随机整数,第三个参数可以指定步长
random.choice(seq)	 序列相关	  从序列中随机选择一个元素,若序列为空,则抛出异常
random.shuffle(seqb)		     打乱原序列,原序列必须可写
random.sample(seq,k)		     从序列中随机选择k个元素返回,原序列不变
random.seed(n=none)	  初始化	   初始化随机熵池

时间模块 time

1. 概念
    主要有两个模块非常重要, time和datetime模块

    time模块: 基于计算机底层时钟实现的模块. 计算机时间是默认使用4个字节存储, 这个时间也就是
    时间戳. 21亿秒--->2038年

    datetime高级模块: 对于time模块的二次封装和改进, 表示 0000-99992. time模块
    语法:
    import time
    time.time() : 获取当前时间戳
    time.sleep() : 让程序休眠多少秒(让出cpu)

时间模块 datetime

1. 概念
    主要有两个模块非常重要, time和datetime模块

    time模块: 基于计算机底层时钟实现的模块. 计算机时间是默认使用4个字节存储, 这个时间也就是
    时间戳. 21亿秒--->2038年

    datetime高级模块: 对于time模块的二次封装和改进, 表示 0000-99992. time模块
    语法:
    import time
    time.time() : 获取当前时间戳
    time.sleep() : 让程序休眠多少秒(让出cpu)

3. datetime模块
    该模块上有两个重要的类, datetime类和timedelta类
    语法:
    from datetime import datetime,timedelta

    使用:
        datetime类的使用
        datetime.now() : 创建当前时间对象
        datetime(year=2020,month=1,day=8......) : 创建指定时间对象
        datetime.strptime(): 将字符串转换会时间对象

        # 时间对象上的方法
        时间对象.year
        时间对象.month
        时间对象.day

        时间对象.strftime()  # 将时间对象进行字符串格式,用于自定义时间展示

时间模块 timedelta

1. 概念
    主要有两个模块非常重要, time和datetime模块

    time模块: 基于计算机底层时钟实现的模块. 计算机时间是默认使用4个字节存储, 这个时间也就是
    时间戳. 21亿秒--->2038年

    datetime高级模块: 对于time模块的二次封装和改进, 表示 0000-99992. time模块
    语法:
    import time
    time.time() : 获取当前时间戳
    time.sleep() : 让程序休眠多少秒(让出cpu)

3. datetime模块
    该模块上有两个重要的类, datetime类和timedelta类
    语法:
    from datetime import datetime,timedelta

    使用:
        datetime类的使用
        datetime.now() : 创建当前时间对象
        datetime(year=2020,month=1,day=8......) : 创建指定时间对象
        datetime.strptime(): 将字符串转换会时间对象

        # 时间对象上的方法
        时间对象.year
        时间对象.month
        时间对象.day

        时间对象.strftime()  # 将时间对象进行字符串格式,用于自定义时间展示

    timedelta类: 用于处理时间对象之间的差(时间计算), 时间跨度类
        创建对象的方式:
            1. 两时间对象相减
            2. 创建跨度对象
                timedelta(days=100)

哈希散列

1. 哈希散列 是一种算法, 用于对数据进行加密, 生成固定长度小量的数据, 是原数据的唯一识别码.
    注意: 哈希散列算法是不可逆的算法

2. 用处:
    a. 密码加密
    b. 软件生成md5码进行比对安全.

3. 常见的算法
    a. md5

    b. sha (名称来自于安全散列算法2(Secure Hash Algorithm 2)

4. 算法的使用步骤
    a. 导入算法库模块
        import hashlib
    b. 准备需要加密的数据(二进制)
        1. b"字符串"
        2. 变量名.encode("utf-8")
        3. 读取文件的时候采用rb
    c. 创建算法对象
        h=hashlib.md5(二进制数据)
        h=hashlib.sha256(二进制数据)
        h=hashlib.sha512(二进制数据)
    d. 获取加密结果
        h.hexdigest()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值