模块
定义: 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~6) 0:周一 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