包和模块

包和模块

  1. 一个py文件就是一个模块

  2. 模块之间的数据交流

​ 我们可以在任意一个模块中使用另外一个模块中所有的全局变量(普通变量、类、函数)
如果想要在一个模块中使用另一个模块的内容,必须先导入模块

  1. 模块的分类

1)系统模块 --系统已经定义好的模块,程序员可以直接导入使用
2)第三方库模块(其他程序员或机构定义的模块) --需要先下载导入到工程中以后才能够使用
3)自定义模块(在工程中创建的模块) —程序员直接导入使用

  1. 导入模块

1)import 模块名 --导入指定模块,导入后可以使用这个模块中所有的全局变量

使用方式:模块名.变量
import test
print(test.a)
print(test.func1())

2)from 模块名 import 变量1,变量2 --导入指定模块,只能使用这个模块中指定的变量,直接使用变量

from test import x,func1
print(x)  #9
func1()   #tet:hello

3)from 模块名 import * --导入模块名里的所有变量

from test import *
print(a)  #100
print(x)  #9

4)重命名

1.import 模块名 as 新模块名  --对模块名重命名,通过新模块名来使用模块
import test as TS
test=10
print(test)  #10
print(TS.a)  #100
2.from 模块名 import 变量1 as 新变量1,变量2  --导入模块后,对指定的变量进行重命名
a='nihao'
print(a)   #nihao
from test import a as A, x,func1
print(a)  #nihao
print(A)  #100

导入模块的原理

当代码执行到import 或者 from - import 导入模块的时候,系统会自动进入指定模块,执行这个模块的所有代码

阻止模块中内容的导入:
如果一个模块中的部分代码不希望在被导入的时候执行,就将这个代码写在if name == ‘main’:下面
每个模块都有一个__name__属性,这个属性保存的是模块名,默认值都是文件名。当我们直接执行某个模块的时候,
这个模块的__name__的值会自动变成__main__,其他没有被执行的__name__的值嗾使自己的文件名。

函数式编程的标准写法

def func1():
    print('显示主页面')

def func2():
    print('登录')

def func3():
    print('注册')

def main():
    # 实现当前模块的功能(功能的实现全靠函数和类)
    func1()
    func3()
    func2()

if __name__ == '__main__':
    main()

  1. 什么是包

包就是包含__init__.py文件的文件夹

  1. 怎么使用包中的模块里面的内容
1)mport bao.模块
import first.file  as f
f.read_file()
f.write_file()
2)from 包 import 模块
from first import file
file.read_file()
file.write_file()
3)from 包.模块 import 变量1,变量2
from first.file import f_nme,write_file
print (f_nme)
  1. 导入包的原理
# import first
import first.file
导入包的时候,会执行包中的__init__.py文件中所有的代码

# import first
# first.file_message()

# import first
# first.read_file
# first.w
  1. 重复导入

import 再导入模块或者包的时候会自动检查对应模块或者包之前是否已经导入过了,如果导入过,就不在导入

标准库和第三方库

标准库 --python自己提供的模块或者包,用的时候可以直接导入
第三方库 --有别人提供的模块或者包,需要先安装或者下载后才可以导入

常用标准库

os模块  --提供文件或者文件夹操作的相关功能(例如:创建文件/文件夹、删除文件/文件夹)
sys模块  --提供系统相关的操作
time模块  --提供时间的相关操作
time()  --获取当前时间
    sleep() --让程序睡眠指定秒数
    localtime()  --获取本地时间
    localtime(时间戳)--- 将时间戳对应的时间转换成sturct_time(转换成我们认识的时间值)

datetime()  --时间相关的操作
json模块   --json色相关操作
re模块   --正则表达式相关操作
turt模块   --画图
hashlib   --加密模块

时间戳:当前时间到1970年1月1号0时0秒的时间差,单位是秒

hashlib模块

  1. hashlib的使用

hashlib是python3.x中提供的一个标准库,专门用来对数据进行加密的。常用的加密算法是:md5,shaxxx
hash算法:
hash算法又叫摘要算法或者离散算法

  1. hash(md5)加密的特点
1.同样的内容使用相同的算法加密之后的结果是一样的
2.加密后的内容不可逆
3.不管原数据的大小或者长度是多少,使用同一种加密算法得到的密文(摘要)的长度是一样的
  1. 生成摘要(对数据加密)

a. 根据算法创建hash对象

# hashlib.算法名()
hash=hashlib.md5()

b. 使用hash对象对指定的数据加密

# hash对象.update(数据)  --对指定的数据加密(数据必须是二进制数字,类型是bytes)
pw='123456'
# hash.update(bytes(pw,encoding='utf-8'))
hash.update(pw.encode())

c. 获取摘要(获取加密后的密文)

di=hash.hexdigest()
print(di)
  1. hash加密的应用:生成数据摘要,确保原数据的完整性
with open('test.txt','rb') as f:
    content=f.read()

hash2=hashlib.md5()
hash2.update(content)
hash2.update('2020-5-8 5:49:0'.encode())  #注意:将时间加入到hash加密中,防止被修改
print(hash2.hexdigest())

二进制和字符串之间的相互转换

1.字符串 -> 二进制
bytes(字符串,encoding='utf-8')

字符串.encode()

2.二进制 -> 字符串
str(二进制,encoding='utf-8')

二进制.decode(encoding='utf-8')
b='abc'.encode()
print(type(b))
str_b=str(b,encoding='utf-8')

str_b2=b.decode(encoding='utf-8')
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页