zoukankan      html  css  js  c++  java
  • PythonDay16

    第十六章模块

    今日内容

    • 自定义模块

    • time模块

    • datetime模块

    • rendom模块

    自定义模块

    # import 模块         例:import time
    # 导入的是time模块中所有的内容(变量,函数名,类名等)
    # import做的三件事:
    1.将文件中的所有代码读取到当前文件
    2.当前文件开辟空间
    3.等待被调用

    # 被导入模块有独立的名称空间,定义模块中得全局变量不会产生冲突
    示例:
    # module_one.py
    name = 'xuhuo'
    def func():
      print("这是第一个模块中的函数")
       
    # module_two.py
    import module_one
    name = 'xuyuwei'
    def func():
      print('这是第二个模块的函数')
    func()
    module_one.func()

    模块二的执行的结果:
    这是第二个模块的函数
    这是第一个模块中的函数

    # 为模块起别名
    import time as f
    通过 f.name 调用   f.变量或者函数

    # 导入多个模块时写法
    import os
    import sys
    import json
    # from...import..
    # 自己写模块module_one 和 module_two
    # module_one中导入module_two模块中的func函数
    from module_two import func()

    from和import的对比,from直接把导入的函数或变量直接放在当前的名称空间中。所以在当前名称空间中,直接使用名字就可以了,无需加前缀

    好处:使用更方便
    坏处:容易和当前执行文件中的名字冲突
    # 当执行文件与模块同名的变量或者函数名,会有覆盖效果

    from datetime imoirt datetime as date
    d = date.now() # 获取当前时间

    # 一行可导入多个
    __all__=['name','read1'] 
    #这样在另外一个文件中用from spam import *就这能导入列表中规定的两个名字

     

    py文件的两种功能

    1.脚本,一个文件就是整个程序(例如博客园登录作业等)
    2.模块,文件中存放着一堆功能,用来导入使用

    if __name__ == '__main__':
      func()
      print(name)
    # 当被导入其他文件时不执行,只有自己运行时,才运行的调试代码,不被导入
    # 用来控制.py文件在不同的应用场景下执行不用的逻辑(或者是在模块文件中测试代码)

    模块的搜索路径

    # 内存中已经加载的模块->内置模块->sys.path路径中包含的模块

    #1.在第一次导入某个模块时(比如meet),会先检查该模块是否已经被加载到内存中(当前执行文件的名称空间对应的内存),如果有则直接引用(ps:python解释器在启动时会自动加载一些模块到内存中,可以使用sys.modules查看)

    #2.如果没有,解释器则会查找同名的内置模块

    #3.如果还没有找到就从sys.path给出的目录列表中依次寻找meet.py文件。

    time模块

    import time
    # 这是一个时间模块,通常用于获取当前时间或时间戳等等

    1.时间戳:时间戳表示的是格林尼治时间是从1970年1月1日00:00:00开始按秒计算的偏移量,每一刻都在变化(返回的是float类型)
    2.格式化时间,格式化的时间字符串(1999-12-06)
    python中时间日期格式化符号:
    %y 两位数的年份表示(00-99
    %Y 四位数的年份表示(000-9999
    %m 月份(01-12
    %d 月内中的一天(0-31
    %H 24小时制小时数(0-23
    %I 12小时制小时数(01-12
    %M 分钟数(00=59
    %S 秒(00-59
    %a 本地简化星期名称
    %A 本地完整星期名称
    %b 本地简化的月份名称
    %B 本地完整的月份名称
    %c 本地相应的日期表示和时间表示
    %j 年内的一天(001-366
    %p 本地A.M.或P.M.的等价符
    %U 一年中的星期数(00-53)星期天为星期的开始
    %w 星期(0-6),星期天为星期的开始
    %W 一年中的星期数(00-53)星期一为星期的开始
    %x 本地相应的日期表示
    %X 本地相应的时间表示
    %Z 当前时区的名称
    %% %号本身
    结构化时间元组(struct_time)元组共有9个元素(年,月,日,时,分,秒,一年中的第几周,一年中第几等)
    import time
    
    # 获取当前时间戳
    print(time.time())
    
    # 将时间戳转换成结构化时间,元组形式
    print(time.localtime(time.time()))
    
    # 将结构化时间转换成字符串
    time_t = time.localtime()
    print(time.strftime('%Y-%m-%d %H:%M:%S', time_t))
    
    # 休眠,单位秒
    time.sleep(3)
    
    # 将字符串转换成结构化时间
    str_time = "2019-8-22 10:11:22"
    time_g = time.strptime(str_time, "%Y-%m-%d %H:%M:%S")
    print(time_g)
    
    # 将结构化时间转换成时间戳
    print(time.mktime(time.localtime()))
    
    # 总结:
    # time.time() 时间戳
    # time.sleep() 睡眠
    # time.localtime() 时间戳转结构化
    # time.strftime() 结构化转字符串
    # time.strptime() 字符串转结构化
    # time.mktime() 结构化转时间戳
    # %Y 年
    # %m 月
    # %d 日
    # %H 时间
    # %M 分钟
    # %S 秒
    

    datetime

    from datetime import datetime,timedelta
    
    # print(datetime.now())  # 获取当前时间
    
    # 算两个时间差几天几个小时几分钟,自己指定时间
    # print(datetime(2018,10,1,10,11,12) - datetime(2011,11,1,20,10,10))
    
    # 将对象转换成时间戳
    # d = datetime.now()
    # print(d.timestamp())
    
    # 将时间戳转换成显示的时间对象
    # f_t = time.time()
    # print(datetime.fromtimestamp(f_t))
    
    #将对象转换成字符串
    # d = datetime.now()
    # print(d.strftime("%Y-%m-%d %H:%M:%S"))
    
    # 将字符串转换成对象
    # s = "2018-12-31 10:11:12"
    # print(datetime.strptime(s,"%Y-%m-%d %H:%M:%S"))
    
    # 可以进行加减运算
    # from datetime import datetime,timedelta
    
    # 减去一天
    # print(datetime.now() - timedelta(days=1))
    
    # 减去一个小时
    # print(datetime.now() - timedelta(hours=1))
    

    random模块

    import random

    # 随机产生一个1-50之间的整数,包括1
    print(random.randint(1,50))

    # 随机产生一个0-1之间的随机小数,不包括1
    print(random.randon())

    # 1-10之间随机小数,不包括10
    print(random.uniform(1, 10))

    # 从容器中随机选择一个,参数是可迭代类型
    print(random.choice((1,2,6,7,9,8)))

    # 从容器中随机生成n个元素,以列表的形式返回,会出现重复元素
    print(random.choices((1,7,8,6,5,48,94,43,16),k = n))

    # 从容器中随机选择n个元素,以列表的形式返回,不会出现重复元素
    print(random.sample((1,7,8,9,4,3,78,89,45,56),k=n)

    # 随机奇数或随机的偶数
    print(random.randrange(1,10,2))

    lst = [1,8,9,7,45,76]
    random.shuffle(lst)
    # 洗牌,将有序的数据打散
    print(lst)

     

  • 相关阅读:
    Typora集成免费图床:PicGo + Gitee
    Github shields徽章配置方法介绍
    Python爬虫的简易流程
    MVC学习系列——Filter扩展
    MVC学习系列——ActionResult扩展
    JQuery插件,傻傻分不清!
    闲谈前端编码解码、C#编码解码。
    年终总结和职业规划
    MVC学习系列——记一次失败面试后,感想。
    C/C++四种退出线程的方法
  • 原文地址:https://www.cnblogs.com/xuyuwei/p/11397942.html
Copyright © 2011-2022 走看看