zoukankan      html  css  js  c++  java
  • Day16模块

    Day16

    当做执行文件时
    __name__ = "__main__"
    当做模块被导入时
    __name__ 等于文件名即模块名
    ```python
    循环导入(模块的名称空间已经建立,但模块内导入语句后的名称未加入到名称空间中,导致另一个模块导入不到,报错)
    解决循环的导入的两种方案:
    1.名字放在导入前,避免找不到名称
    2.导入放在函数内,函数在定义时不会执行,保证了模块内的名称创建完全
    !!!!首次导入模块的三件事:1.创建模块的名称空间   2.执行模块内的代码   3.在执行文件中拿到模块中名字
        再次导入时,直接调用上一次的结果,不会再创建模块的名称空间
    

    1.包
    什么是包:

    包就是一个含有__init__.py的文件夹
    

    为何要用包
    导入包

    1.创建名称空间
    2.执行包下的__init__.py
    3.
    
    相对导入仅限于包内文件 互相导入
    .当前文件夹
    ..上一级文件夹
    
    

    2.json&pickle
    什么是序列化
    将内存中的数据类型转成另外一种格式

    序列化:字典>>>序列化>>>其他格式>>存到硬盘
    ​ 硬盘>>>读取>>>其他格式>>>反序列化>>>字典

    为何是序列化
    1.持久保存程序的运行状态
    2.数据的跨平台交互

    json:
    字符串
    优点:跨平台性强
    确定:不能识别所有python数据类型
    强调:json格式不能识别单引号

    import json
    dic = {"k1":True,"k2":10,"k3":"egon"}
    dic_json = json.dumps(dic)
    dic_json = {"k1":true,"k2":10,"k3":"egon"}#json格式的字符串
    type(dic_json) = str
    
    

    pickle:
    优点:能识别所有python类型
    缺点:只能被python这门编程语言识别

    import pickle
    dic = {"k1":True,"k2":10,"k3":"egon"}
    dic_pickle = pickle.dumps(dic)
    dic_pickle #pickle模式的二进制
    type(dic_json) = bytes
    

    如何序列化

    3.time模块

    1.时间戳
    time.time()

    2.格式化字符串

    time.strftime("%Y-%m-%d %H:%M:%s %p")
    

    3.结构化的时间对象

    time.localtime()
    time.gmtime()
    差8小时
    time.localtime.tm_hour
    time.localtime.tm_wday
    time.localtime.tm_yday
    
    

    datetime模块
    time模块获取结构化时间麻烦:datetime.datetime.now()
    时间戳与格式化时间无法 :datetime.datetime.fromtimestamp()
    datetime.datetime.now() + datetime.timedelta()

    random
    随机

    import random
    random.random( ) 0到1之间的任意小数
    random.randint(1,3) 1到3之间的整数
    random.randrange(1,3) 顾头不顾尾,[1,2]
    random.choice([1,"a",[1,2,3]])指定范围
    random.sample([1,2,3,4,5],3)从指定范围取出一定数量
    random.uniform(1,3) (1,3)之间的小数,可以指定范围
    item = [1,3,5,7,9]
    random.shuffle(item) 洗牌
    
    def make_code(n):
    s1 = str(random.randint(0,9))
    s2 = chr(random.randint(65,90))
    s3 = chr(random.randint(97,122))
    res = s1+s2+s3
    for i in range(n-3):
    s = random.choice([str(random.randint(0,9)),chr(random.randint(65,90)),chr(random.randint(97,122))])
    res += s
    print(res)
    return res
    make_code(6)
    

    3.re&正则表达式

  • 相关阅读:
    树形地铁系统[树的最小表示]
    156. 矩阵[二维的hash]
    兔子与兔子
    滑动窗口【单调队列入门题】
    【YBTOJ】生日相同
    【YBTOJ】移位包含
    【YBTOJ】【HDUOJ 3085】逃离噩梦
    【YBTOJ】立体推箱子
    【CodeForces 1408F】Two Different
    【Luogu P3338】[ZJOI2014]力
  • 原文地址:https://www.cnblogs.com/robert-zhou/p/10073972.html
Copyright © 2011-2022 走看看