module

一、模块基础知识

1. 模块、包介绍

模块:一个py文件就是一个模块,文件名就是模块名(如果一个模块想要被其他模块使用,模块名必须是标识符并且不是关键字)

:一个包含______init__.py文件的文件夹就是一个包

2. 使用其中的内容

1)如何导入模块

一个模块可以使用另外一个模块中所有的全局变量,但是使用前需要先导入模块

导入模块的语法:

  • import 模块名 :导入指定模块,导入后通过 ‘模块名.x’ 去使用模块中所有的全局变量

  • from 模块名 import 变量1, 变量2, 变量3, …:导入指定模块,导入后可以直接使用import后面所有的变量

  • import 模块名 as 新模块名:导入模块并且对模块进行重命名,使用数据时候采用:‘新模块名.’

  • from 模块名 import 变量1 as 新变量1, 变量2, 变量3, …

  • **from 模块名 import ***:导入模块中所有的全局变量

2)导入模块的原理

不管是通过import还是from - import,导入模块的时候都会先进入指定模块,将模块中的代码全部执行

模块中的代码在被导入的时候选择执行或不执行:

if __name__ == '__main__':
 # 这个if语句外面的代码在被导入的时候会执行,里面的代码被导入的时候不会被执行
 pass

二、系统模块及使用

1. 工作实用模块

1)os 模块:提供文件和文件夹操作的相关函数

os.getcwdb()			- 	返回当前工作目录
os.listdir(path)        -   返回指定目录中所有的文件或者文件夹的名字

2)time 和 datetime:提供操作时间相关的函数

3)random:提供随机相关函数

4)hashlib:提供hash加密相关函数(hash摘要)

2. time 模块

1) 什么是时间戳

unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒,计算机内用时间差来表示时间

时间戳的优点:

  • 存储时间戳比存储字符串时间消耗的内存要小很多
  • 加密和解密更容易
time()		-	获取当前时间(时间戳)


t1 = time.time()
print(t1)       # 1615966804.79146  (4字节~5字节)
                # '2021-3-17 03:50:00'   (18字节)
time.localtime()          -     获取当前本地时间(结构体时间)
time.localtime(时间戳)      -    将时间戳对应的时间转换成结构体时间


t2 = time.localtime()
print(t2)

t3 = time.localtime(0)
print(t3)

t4 = time.localtime(1615966804.79146)
print(t4)
print(t4.tm_year, t4.tm_mon)
time.sleep(时间)        -   让程序睡眠指定时间,单位秒


print('=======')
time.sleep(1)
print('+++++++')
2)datetime

time、datetime、date

from datetime import time, datetime, date, timedelta

# 1) 获取当前时间
t5 = datetime.now()
print(t5)     # 2021-03-17 16:36:54.297076
print(t5.year, t5.month, t5.hour)

t6 = date.today()
print(t6)       # 2021-03-17

# 2) 时间的加减操作
print('当前时间:', datetime.now())
# 10天前:
print('10天前:', t5 - timedelta(days=10))    # 2021-03-07 16:42:01.363135
# 20天前
print('20天前', t5 - timedelta(days=20))    # 2021-02-25 16:42:36.397193

print('1个小时前:', t5 - timedelta(hours=1))
print('2个小时后:', t5 + timedelta(hours=2))
print('47个小时后:', t5 + timedelta(hours=47))
print('2小时30分后:', t5 + timedelta(hours=2, minutes=30))

t6 = t5 - timedelta(days=1, hours=1)
print(t6, t6.year, t6.month, t6.day, t6.hour, t6.minute, t6.second)

3. random 模块

random.randint(m, n)	-	产生m到n的随机整数


print(random.randint(10, 20))
random.random()         -     产生 0 ~ 1 的随机小数


print(random.random())      # 0 ~ 1
print(random.random() * 100)    # 0 ~ 100
print(random.random() * 50 + 50)        # 50 ~ 100
print(random.random() * 5 + 15)         # 15 ~ 20
random.shuffle(列表)     -      将列表中元素的顺序随机打乱(洗牌)


nums = [23, 34, 'abc', True]
random.shuffle(nums)
print(nums)
random.choice(序列)      -      从序列中随机获取一个元素
random.choice(序列, k=N)    -   从序列中随机获取N个元素


result = random.choice('abc3lo901')
print(result)

nums = [23, 34, 'abc', 20, 3, 4]
result = random.choices(nums, k=2)
print(result)

4. hash 摘要

1) hash加密算法

hash加密的特点:

  • 不可逆:无法通过hash算法加密得到密文获取到原数据
  • 相同的数据通过相同的算法得到摘要(密文)是一样的
  • 不同长度是数据通过相同的算法得到的摘要(密文)的长度一样
2)生成数据摘要(加密)
  • 根据算法创建hash对象: hashlib.算法名()

    • 常用算法:md5、shaX
  • 添加原文:hash对象.update(需要加密的数据)

    • 注意:加密数据的类型必须bytes(相当于python中二进制数据)
    hash_obj.update('123456'.encode())
    
  • 获取摘要(获取密文):hash对象.hexdigest()

    result = hash_obj.hexdigest()
    print(result)    # e10adc3949ba59abbe56e057f20f883e
    

5. 好玩的模块

turtle、smtplib、email 、…

三、包的使用

举例:

​ 已在本地创建包
在这里插入图片描述

1. 导入包中的内容

+ import 包名

  只有在自定义完______init__.py后才有用

+ import 包名.模块名

  导入包中指定的模块, 使用模块中的内容的格式: 包名.模块名.x

+ from 包名 import 模块名1,模块名2...

+ from 包名.模块 import 变量1,变量2...

注意:import 在导入模块或者包的时候,会先检查这个模块或者包之前是否已经导入过,如果已经导入过不再重复导入

2. ____init.py文件的作用

当导入包或者包中的内容的时候,会自动执行包中的______init__.py文件

____init.py文件可以做什么:

  • 给频繁使用的方法添加快捷导入的途径
  • 导入包的时候直接导入包中所有的模块
举例:
from files import commonFile, csvFile, jsonFile

import files
files.open_file()

from files import open_file
open_file()

import files
files.commonFile.open_file()
  • 以包为单位提供工具
举例:
def delete_file():
    print('删除文件')

import files
files.delete_file()

from files import delete_file
delete_file()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值