python循环导入以及sys和time标准库

234 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第19天

模块的循环导入问题

循环导入:

在大型的python项目中,需要很多python文件,由于架构不当,可能会出现模块之间的相互导入

from B模块 import f()
A模块:
    def test():
        f()

from A模块 import test()        
B模块:
    def f():
        test()

上述 这种调用就会出现一个问题,那就是一直循环调用,因为哦我们知道,在调用一个模块时我们会加载模块内的“直接方法”

避免问题

  1. 重新架构(手动狗头,ps:我推荐这种方法,嘿嘿)

  2. 将导入的语句放到函数里面

  3. 把导入的语句放到模块最后

标准库

说白了就是系统自带的模块

sys模块

import sys
print(sys.path)

sys.path:包含了一个 Python 解释器自动查找所需模块的路径的列表

v = sys.version
print(v)

sys.version:显示当前的python版本信息

a = sys.argv
print(a)

sys.argv:是一个包含命令行参数的列表(简单来说就是可以在执行含有sys.argv的python文件时向解释器传入参数)

time模块

improt time
t = time.time
print(t)
s = timne.ctime(t)
print(s)
r = time.loacaltime(t)
print(r)
it = time.mktime(r)
print(it)
tt = time.strftime('%Y-%m-%d')
print(tt)
rr = time.strptime('2022/04/27','%Y/%m/%d')
print(rr)
time.sleep(3)

time.time:时间戳

time.sleep:延迟时间,让程序执行延迟

time.ctime(时间戳):将时间戳转换为字符串

time.localtime(时间戳):将时间戳装换成元组的形式

time.mktime:将元组装换成时间戳

time.strftime:将元组的时间方式装换成字符串,如不传元组则默认返回现在对应的时间

time.strptime:将字符串装换成元组的方式

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 当前时区的名称
  • %% %号本身