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)
原文地址:https://www.cnblogs.com/liubing8/p/11263587.html