欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python模块知识一 自定义模块、time、datetime时间模块

程序员文章站 2022-07-04 13:02:31
第五章 模块 1.自定义模块: 1. 模块分类: 1. 内置模块(标准库) python解释器自带的.py文件(模块) 2. 第三方模块(各种大神写的) 需要额外下载(并发编程pypi) 3. 自定义模块(自己写的) 不用额外下载 2. 每一个py文件就是一个模块 import 导入模块 模块的好处 ......

第五章 模块

1.自定义模块:

  1. 模块分类:

    1. 内置模块(标准库)-- python解释器自带的.py文件(模块)
    2. 第三方模块(各种大神写的)-- 需要额外下载(并发编程pypi)
    3. 自定义模块(自己写的)--不用额外下载
  2. 每一个py文件就是一个模块

    import #导入模块

    模块的好处:

    1. 避免些重复代码
    2. 可以多次利用
    3. 拿来主义
  3. 导入模块发生的事情:

    1. 当前的名称空间中开辟一个新空间(test)
    2. 将模块中所有的代码执行
    3. 通过 模块名.函数名 进行查找函数
  4. 使用别名使文件名更短:

​ import test as t

print(locals())#查看当前空间的变量
i mport test
print(locals())
#调用导入模块的函数
test.func()

#使用别名
import test as t
t.func()
  1. 不同模块使用同一别名做兼容性
msg = {1:"扳手",2:"螺丝刀"}
choose = input(msg)
if choose == 1:
    import meet as t
elif choose == 3:
    import test as t

t.func()
  1. from :

​ from 和import区别:

​ import:#将整个模块运行

​ 缺点:占用内存大。

​ 优点:不会和当前文件定义的变量或者函数发生冲突

​ from:

​ 缺点:会与当前的文件定义的变量或者函数发生冲突,(可以用别名解决)

​ 优点:占用内存小

  1. from * :--拿模块所有

    会出现覆盖现象,不能解决,不建议使用

    __all__ = ["可被导入的函数名和变量名"]#写在模块中配合from * 使用指定要拿的

name = 'cc'
def func():
    print('is 666')
from test import *
print(name)
func()
name = "ww"
from test import name as n#别名
print(name)
print(n)
  1. 模块导入的坑

    例如:不要三个py文件相互导入,会形成环路

  2. 模块的两种用法:

    脚本:(在cmd中执行 python text.py

    模块:自测函数不会被导入

def func():
    print(1)
if __name__ == '__main__':#自测接口
    func()
  1. 导入路径:

    1. 相对路径:

      from day15.t1 import meet
      print(meet.name)
    2. 绝对路径:

      #错误引用
      from r"d:\" import meet
      from ../
      #正确引用
      from sys import path
      print(sys.path)
      path.insert(0,"d:\\")
      import meet
      print(meet.name)

    sys.path中模块的顺序:自定义 > 内置 > 第三方

2.time --时间模块

  1. time.time():--时间戳,浮点数,可运算
  2. time.sleep():--睡眠 #秒
import time
print(time.time() + 5000)
time.sleep(3)#睡眠3秒
  1. time.strftime("格式化","结构体时间"):将时间戳、结构体时间转换成字符串时间
  2. time.gmtime():--元组形式 命名元组,结构体时间,格林尼治时间
  3. time.localtime():计算机当前时间,结构体时间
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(15000)))
  1. time.strptiem():将字符串时间转换成结构化时间
  2. time.mktime():将结构化时间转换成时间戳
print(time.strptime("2024-3-16 12:03:30","%y-%m-%d %h:%m:%s"))

#将字符串时间转换成时间戳
print(time.mktime(time.strptime("2024-3-16 12:03:30","%y-%m-%d %h:%m:%s")))
print(time.mktime(time.gmtime()))

3.datetime 模块

​ 用处:记录日志使用,计算时间

from datetime import datetime,timedelta
print(datetime.now())#获取当前时间
print(type(datetime.now()))#--对象

print(datetime(2019,5,20,13,14,00))#指定日期标准化

print(datetime(2019,5,20,13,14,00) - datetime(2019,5,20,13,14,00))

#将当前时间转换成时间戳
t = datetime.now()
print(t.timestamp())
#将时间戳转换成当前时间
import time
print(datetime.fromtimestamp(time.time()))
print(datetime.fromtimestamp(150000))

#字符串转成对象
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"))

#timedelta 时间运算.加减
print(datetime.now() + timedelta(hours = 30 * 24 *12))