zoukankan      html  css  js  c++  java
  • Python模块01/自定义模块/time模块/datetime模块/random模块

    Python模块01/自定义模块/time模块/datetime模块/random模块

    内容大纲

    1.自定义模块

    2.time模块

    3.datetime模块

    4.random模块

    1.自定义模块

    1.自定义一个模块

    # 1. 自定义一个模块
        # import # 导入 (拿工具箱)
    
    模块分类:
    #     1.内置模块(标准库) -- python解释器自带的.py文件(模块)
    #     2.第三方模块(各种大神写的) -- 需要额外下载的 (并发编程开始讲解) (pypi)
    #     3.自定义模块(自己写的) -- 不需要额外下载
    
    模块:
        分模块的好处:
    #       1.避免写重复代码
    #       2.可以多次利用
    #       3.拿来主义
    
    # import test
    # test.func()
    

    2.导入发生的事情

    # 2.1 当前的名称空间中开辟一个新的空间(test)
    # 2.2 将模块中所有的代码执行
    # 2.3 通过模块名.进行查找函数(工具)
    
    # print(locals())
    # import test
    # print(locals())
    
    # import test
    # print(test.name)
    # print(test.func())
    
    #错误的示例:
    # import test.py
    # print(test.py.func())
    # import test
    
    
    # import test
    # import test
    # import test
    # import test
    # import test
    # print(test.name)
    
    # import test as t
    # print(t.name)
    重复导入会直接引用内存中已经加载好的结果
    
    别名使用的好处:
    # 1.使用别名能够使文件名更短
    # msg = """
    # 1.扳手
    # 2.螺丝刀
    # >>>
    # """
    # 做一兼容性
    # choose = input(msg)
    # if choose == "1":
    #     import meet
    #     meet.func()
    # elif choose == "2":
    #     import test
    #     test.func()
    
    # # 做一兼容性
    # choose = input(msg)
    # if choose == "1":
    #     import meet as t
    # elif choose == "2":
    #     import test as t
    #
    # t.func()
    
    
    # import test  # 把工具箱拿过来
    
    # from test import func
    # func()
    
    import 和 from 的区别
    import # 把工具箱拿过来
         缺点:占用内存比较大
         优点:不会和当前文件定义的变量或者函数发生冲突
    
            # import test
            # name = "宝元"
            # print(test.name)
            # print(name)
    
    from :
        缺点:会和当前文件定义的变量或者函数发生冲突
    
            # name = "宝元"
            # from test import name
            # print(name)
    
            解决方法:
                # name = "宝元"
                # from test import name as n
                # print(name)
                # print(n)
    
        优点:占用内存比较小
    
    # name = "宝元"
    # def func():
    #     print("is 马桶推送器")
    
    # from test import *
    # print(name)
    # func()
    
    # from test import * 会出现覆盖的现象,不能解决
    # 飘红不一定是报错
    
    # from meet import *
    # print(func)
    # print(name)
    #
    # __all__ = ["可以被导入的函数名和变量名"]
    
    # from meet import foo
    # import meet
    # print(meet.foo)
    
    # __all__ = ["可以被导入的函数名和变量名"]
    
    # 模块导入时的坑
    # name = "宝元"
    # import test
    # print(test.name)
    
    模块的两种用法:
    #   1.脚本(在cmd中执行 python test.py)
    #   2.模块(不使用或者导入)
    
    # from meet import *
    # func()
    
    # __name__ == meet
    
    # from test import *
    # if __name__ == '__main__': # 测试接口
    #     func()
    
    在当前模块中使用__name__ 就是 "__main__"
    当模块被导入的时候__name__就是被导入的模块名
    
    导入路径:
    # import meet
    # print(meet.name)
    
    使用相对路径:
    # from day15.t1 import meet
    # print(meet.name)
    
    使用绝对路径:
    # 错误示例:
        # from r"D:" import meet
        # from ../
    
    正确的绝对路径:
    # from sys import path
    # path.insert(0,"D:\")
    # import meet
    # print(meet.name)
     自定义 > 内置 > 第三方
    

    2.time模块

    # time -- 时间
    
    # import time
    # print(time.time())  # 时间戳 浮点数
    # print(time.time() + 5000000000)  # 时间戳 浮点数
    # time.sleep(3) #  睡眠         # 秒
    
    # print(time.strftime("%Y-%m-%d %H:%M:%S"))  # 给人看的
    
    # print(time.gmtime())  # 结构化时间 数据类型是是命名元组
    # print(time.gmtime()[0])
    # print(time.gmtime().tm_year)
    
    
    # 将时间戳转换成字符串时间
    # print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime(1564028611.631374)))
    
    # 将字符串时间转换成时间戳
    # print(time.mktime(time.strptime("2024-3-16 12:30:30","%Y-%m-%d %H:%M:%S")))
    
    time重点:
    # time.time()
    # time.sleep()
    # time.gmtime() / time.localtime() #
    # time.strftime("格式化","结构化时间") #
    # time.strptime("字符串","格式化")
    # time.mktime()
    
    # "2019-10-14 17:30:20"  练习题
    

    3.datetime模块

    # from datetime import datetime,timedelta
    
    # datetime -- 对象
    # print(type(datetime.now()))
    
    # print(datetime.now()) # 获取当前时间
    # print(datetime(2019,5,20,15,14,00) - datetime(2019,5,20,14,20,00))
    
    # 将当前时间转化成时间戳
    # t = datetime.now()
    # print(t.timestamp())
    
    # 将时间戳转化成当前时间
    # import time
    # print(datetime.fromtimestamp(15000000000))
    
    # 将字符串转成对象
    # print(type(datetime.strptime("2019-10-10 22:23:24","%Y-%m-%d %H:%M:%S")))
    
    # 将对象转成字符串
    # print(str(datetime.now()))
    # print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
    
    
    # datetime加减
    # print(datetime.now() + timedelta(hours=30 * 24 * 12))
    # print(datetime.now() - timedelta(hours=30 * 24 * 12))
    
    
    # 总结:time
    #     用处: 记录日志时使用
    #     计算时间
    

    4.random模块

    # import random
    
    # print(random.random())          # 0 ~ 1
    # print(random.uniform(1,10))     # 1 ~ 10
    # print(random.randint(1,50))     # 1 ~ 50(闭区间)
    # print(random.randrange(1,5,2))    # randrange(起始,终止,步长)
    # print(random.choice([1,2,3,4,5,])) # 选择一个元素
    # print(random.choices([1,2,3,4,5,],k=2))   # 选择两个元素,会有重复
    # print(random.sample((1,2,3,4,5),k=2))  # 选择两个元素,不会有重复(除非只有两个)
    
    # lst = [1,2,3,4,5,6,7,8,9,0]
    # random.shuffle(lst)  # 顺序打乱
    # print(lst)
    
    #练习题:验证码
    

    5.今日总结

    # 1.自定义模块
    #     import 工具箱
    #     from 工具箱 import 工具
    #     from 工具箱 import *
    #     __all__ = ["func","name"]  # 控制*获取的工具
          # 起别名 import from
    
          # 模块的两个功能:
              # if __name__ == '__main__':
              #     在当前模块中使用,if下边的代码会执行
              #     当模块被导入的时候 if下边的代码不会执行
    
          # 模块导入的坑:
    
          # 模块导入的路径:
          # 相对路径:
                # from 工具箱.工具箱 import 工具
          # 绝对路径:
          #     from sys import path
          #     path.insert(0,绝对路径)
          # 自定义 > 内置 > 第三方
    
    # 2.time
        # time.time()   # 时间戳 浮点型
        # time.sleep()  # 睡眠 秒单位
        # time.gmtime() / time.localtime() # 时间戳 -- 结构化
        # time.strftime("格式化","结构化时间") #  结构化 -  字符串
        # time.strptime("字符串","格式化") # 字符串 - 结构化
        # time.mktime() # 结构化 -- 时间戳
    
    # 3.datetime
        # 将当前时间转化成时间戳
        # t = datetime.now()
        # print(t.timestamp())
    
        # 将时间戳转化成当前时间
        # import time
        # print(datetime.fromtimestamp(15000000000))
    
        # 将字符串转成对象
        # print(type(datetime.strptime("2019-10-10 22:23:24","%Y-%m-%d %H:%M:%S")))
    
        # 将对象转成字符串
        # print(str(datetime.now()))
        # print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
    
    
        # datetime加减
        # print(datetime.now() + timedelta(hours=30 * 24 * 12))
        # print(datetime.now() - timedelta(hours=30 * 24 * 12))
    
    # 4.random (随机数)
    
        # print(random.random())          # 0 ~ 1
        # print(random.uniform(1,10))     # 1 ~ 10
        # print(random.randint(1,50))     # 1 ~ 50(闭区间)
        # print(random.randrange(1,5,2))    # randrange(起始,终止,步长)
        # print(random.choice([1,2,3,4,5,])) # 选择一个元素
        # print(random.choices([1,2,3,4,5,],k=2))   # 选择两个元素,会有重复
        # print(random.sample((1,2,3,4,5),k=2))  # 选择两个元素,不会有重复(除非只有两个)
    
        # lst = [1,2,3,4,5,6,7,8,9,0]
        # random.shuffle(lst)  # 顺序打乱
        # print(lst)
    
  • 相关阅读:
    DML数据操作语言练习
    表的操作练习
    20151218--地区导航习题
    20151217--Ajax的一点补充
    02151216--Ajax
    json(转)
    Node.js(转) -- 临时来说还看不懂!
    20151113--JSTL
    20151210--MVC
    链表(转)
  • 原文地址:https://www.cnblogs.com/liubing8/p/11263587.html
Copyright © 2011-2022 走看看