模块使用及常用模块

时间:2022-12-09 21:35:06

模块

定义: python中一个.py文件称为一个模块.

模块划分: 按照功能来进行划分,相同或者相似的我们将其放到一个模块

优点:

1.提高代码的可维护性

2.提高代码的复用性

3.可以引入其他模块

4.可以避免函数名与变量名的冲突

 

模块搜索路径:

当导入一个模块时,解释器先在当前包中查找模块,若找不到,然后在内置的built-in模块中查找,找不到则按sys.path给定的路径找对应的模块文件(模块名.py)

自定义模块

..........

 

name属性

作用:为了解决当该模块被其他模块引入的时候,该模块中执行的函数我们需要进行隔离,这时候就可以使用name属性

name 每个模块中都有的一个内置模块,当该模块在自身执行的时候,name的值为main, 当该模块被其他模块引入的时候, name 的值为该模块的模块名,因此可以通过name的值来进行区分,文件是否在该模块中执行

一般大型项目都会使用:

if __name__ == "__main__":

作为正常程序入口.

当不同开发人员同时开发一个项目的时候,项目里面的模块出现重名的时候就会引起冲突,解决冲突的办法:

就是在模块的外部套一层目录,这个目录叫包,为了区别普通目录与包,这时会在包中创建一个init .py文件. 只要最外面的包名不发生冲突,这个模块就不会冲突

给模块取名时,避免使用系统内置名

sys模块

sys.path 返回python内建规则查找的一个列表

sys.platform 获取当前执行环境的平台

sys.argv 获取当前正在执行的命令行参数的参数列表; 可以从外部往内部传递参数

argv[0]  当前程序名

argv[1] 第一个参数

如何安装第三方模块:

1.file-->

2.打开终端 pip install 模块名

升级pip工具 python -m pip install --upgrade pip

time时间模块

时间戳: 从1970年1月1日到现在,单位s

UTC: 格林尼治时间, 世界标准时间 utc+8

DST: 夏令时

time.struct_time(tm_year=2019, tm_mon=3, tm_mday=1, tm_hour=7, tm_min=28, tm_sec=25, tm_wday=4, tm_yday=60, tm_isdst=0)
year:年
mon :月
mday:日
hour:时
min:分
sec:秒
wday:星期码(0~60:周一  6:周日
yday:今年第多少天
isdst:1 夏令时  0 utc
sec = time.time()  #sec 秒 当前时间的时间戳,浮点数形式
# print(sec)   # 时间戳,1970.1.1到当前时间总秒数

gt = time.gmtime(sec)  #时间戳转格林尼治时间
# print(gt) #格林尼治时间元组

lt=time.localtime(sec)  #时间戳转本地时间
# print(lt) #本地时间元组

mt=time.mktime(lt) # lt:为本地时间,将本地时间元组转成时间戳
# print(mt) #时间戳

**tstr1=time.asctime(lt) #将时间元组转为时间字符串,无格式
print(tstr1)  #时间字符串

**tstr2=time.ctime(sec)  #将时间戳转为时间字符串,无格式
print(tstr2)  #时间字符串

tstrf=time.strftime("%Y/%m/%d %H:%M:%S",lt) #将时间元组格式化为时间字符串 %Y/%m/%d等同于%x %H:%M:%S等同于%X
print(tstrf)  #格式化的时间字符串

ttuple=time.strptime(tstr1) #将时间字符串转为时间元组
ttuple=time.strptime(tstrf,"%Y/%m/%d %H:%M:%S") #将指定格式的时间字符串转化为时间元组
print(ttuple)  #时间元组

time.sleep(1) #让cpu休眠1秒再执行

time.clock()
'''通常情况下,会两个一起连用,计算cpu的用时。
模块中出现的第一个clock,用来标记,第二个clock会返回从标记开始
到第二个clock出现的时候cpu的用时。'''
格式含义备注时间格式化表示法

time.gmtime(时间戳) 将时间戳转为格林尼治时间元组

time.struct_time(tm_year=2019, tm_mon=3, tm_mday=1, tm_hour=10, tm_min=58, tm_sec=45, tm_wday=4, tm_yday=60, tm_isdst=0)

time.localtime(时间戳) 将时间戳转为当前时间元组

time.struct_time(tm_year=2019, tm_mon=3, tm_mday=1, tm_hour=18, tm_min=58, tm_sec=45, tm_wday=4, tm_yday=60, tm_isdst=0)

 

datetime模块

dt=datetime.datetime.now() #返回一个当前的datetime对象
dt2=datetime.datetime.now()
# print(dt)

datetime.datetime(2018,2,25,20,35,36,709216) #获取指定时间的对象

str1=dt.strftime("%Y/%m/%d %X") #将datetime对象格式化为字符串
# print(str1)

dtt=dt2-dt  #两个datetime对象相减,会返回一个时间差对象

jgday1 = dtt.days  #获取间隔时间的天数部分
jgday2 = dtt.seconds  #获取间隔时间溢出天数的秒数部分

 

calendar模块

import calendar
year = 2019
year2=2020
month = 3
day = 2
month_rili = calendar.month(year,month)  #返回指定年月的日历
print(month_rili)
year_rili = calendar.calendar(year) #返回指定年份的日历
# print(year_rili)
res = calendar.isleap(year) #判断指定年份是否为闰年
# print(res)
calendar.leapdays(year,year2) #返回[year到year2)之间闰年的个数

calendar.monthrange(year,month) #返回某年某月的第一天的星期码和当月总天数

seq=calendar.monthcalendar(year,month)
# 返回指定月份的以每一周为元素的序列,若不是本月日期,则用0代替
# print(seq) #二维列表
wk=calendar.weekday(year,month,day) #返回指定日期的星期码(0:周一---6:周日)
# print(wk)
set=calendar.firstweekday() #返回当前每周起始日期的设置
# print(set) #周一的码值为0,周日为6