通过调用模块,可以调用模块中的变量、函数、类
导入模块的方式有两种
1.import 模块名
2.from 模块名 import 变量/函数/类
3.from 模块名 import * (可以通过__all__限制可以使用*所导入的内容)
无论是from还是import模式,都会将模块内容进行加载,那么需要执行的内容,我们一般写在
if __name__ = '__main__':这个判断中
__name__如果是导入的,会返回calculate。如果是本模块,会返回__main__。
包
具有__init__名称py文件的文件夹,称为包
一个包中可以有多个模块
项目 -- 包 -- 模块 -- 类 变量 函数
包中的模块相互调用,也不能直接import 模块,而需要从包开始层层调用,可使用 .模块名调用或者包.模块名调用
包的导入方式:
1.from 包名 import 模块名
2.from 包名.模块名 import 变量/函数/类
__init__文件
导入包的时候,默认调用__init__文件
1.当导入包的时候,把一些初始化的函数、变量、类定义在该文件中
2.文件中的函数、变量等,直接通过包名.函数...调用
3.如果使用from 包名 import * 需要在__init__文件中添加__all__=['',''],列表中来暴露可以访问的模块(与模块导入时*的用法相反)
循环导入
大型的python项目中,由于架构不当,可能会出现模块间循环引用的情况。
避免产生循环导入:
1.重新架构
2.将对应的导入动作放入对应的函数中,不全局导入
time模块
import time
t1 = time.time() # 生成当前时间戳
print(t1)
print(time.ctime(t1)) # 将时间戳转换为年月日格式
print(time.localtime(t1)) # 以元组格式转换时间戳
t2 = time.localtime(t1)
print(time.mktime(t2)) # 将元组转换为时间戳
print(t2.tm_hour) # 单独调用元组的某个字段
print(time.strftime('%Y-%m-%d %H-%M-%S')) # 按格式输出时间字符串
print(time.strptime('2022/02/07', '%Y/%m/%d')) # 按格式将日期转换为元组
1644224436.073462
Mon Feb 7 17:00:36 2022
time.struct_time(tm_year=2022, tm_mon=2, tm_mday=7, tm_hour=17, tm_min=0, tm_sec=36, tm_wday=0, tm_yday=38, tm_isdst=0)
1644224436.0
17
2022-02-07 17-00-36
time.struct_time(tm_year=2022, tm_mon=2, tm_mday=7, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=38, tm_isdst=-1)
重点time.time() time.sleep() time.strftime('%Y-%m-%d %H-%M-%S')
timedate模块
timedate :1.time 时间 2.date 日期 3.datetime 日期时间 4.timedelta 时间差
主要使用timedate.date.today()和timedate.timedelta()
import datetime t1 = datetime.date.today() t2 = datetime.datetime.now() td = datetime.timedelta(days=2, hours=2) t3 = t2 + td print(t1, t2, td, t3) 2022-02-08 2022-02-08 16:04:18.652741 2 days, 2:00:00 2022-02-10 18:04:18.652741
random模块
import random ran = random.random() # 0-1之间的随机小数 print(ran) ran = random.randrange(1, 10, 2) # 根据范围和步长获取随机数,步长默认为1,取值范围右不包含 print(ran) ran = random.randint(1, 10) # 根据范围获取随机数,取值范围左右均包含 print(ran) list1 = ['a', 'b', 'c', 'd'] ran = random.choice(list1) # 从列表中随机去除一个元素 print(ran) ran = random.shuffle(list1) # 打乱列表顺序 print(list1) 0.21391242258489673 9 7 d ['a', 'b', 'c', 'd']
*chr()和ord()函数可以根据Unicode码和字符互相转换
hashlib模块
import hashlib
sec = 'we eat together'.encode('utf-8') # 对语句进行编码,使用utf-8
md5 = hashlib.md5(sec).hexdigest() # 通过md5加密,通过16进制显示摘要
sha1 = hashlib.sha1(sec).hexdigest() # 通过sha1加密,通过16进制显示摘要
print(md5)
print(sha1)
5272875f446c833e7c0289f226a597bb
035d28ec2aff88a94ff86d25323d383630373580
利用md5加密密码并在登录时验证
passwd = '123456'
md5 = hashlib.md5()
md5.update(passwd.encode('utf-8'))
real = md5.hexdigest()
userpasswd = input('your password:')
md5 = hashlib.md5()
md5.update(userpasswd.encode('utf-8'))
userpasswd = md5.hexdigest()
if userpasswd == real:
print('right password')
else:
print('wrong password')
第三方模块
通过pip install 来安装第三方模块



