21.8.20学习内容

昨日内容回顾

1.名称空间和作用域

# 名称空间即存放变量名与值绑定关系的地方
1.内置名称空间:
  启动解释器自动打开,关闭销毁.
2.全局名称空间:
   python文件运行则创建,结束销毁,
3.局部名称空间:
  函数体代码运行时打开,结束后销毁.
作用域:
 查找名字的先后顺序.
  局部空间-全局空间-内置空间.

2.匿名函数、列表生成式、三元表达式

# 匿名函数就是没有名称的函数,一般不单独使用,lambda 形参1 形参2:返回值

# 列表生成式 就是将原本复杂的书写形式做一个简化 
l1 = [11, 22, 33, 44, 55, 66, 77, 88]
new_list = []  
for i in l1:
    new_list.append(i*2)
print(new_list)
#在列表中可以支持if判断以及for循环

l1 = [11, 22, 33, 44, 55, 66, 77, 88, 99]
new_list1 = [i for i in l1 if i*2 > 60]
print(new_list1)
#当if判断仅仅是二选一的情况下 可以用三元表达式
name = input('username>>>:')
res = 'NB' if name == 'jason' else 'SB'
print(res) 
 当if后面的条件成立的情况下,使用前面的结果,当if的结果不成立的情况下 使用后面的结果,由中间if 的条件做判断

 

 

 两者选一个的情况中,可以简化写在一行内

3.模块

# 具有一定功能的代码集合可以是文件,也可以是多个文件的集合,称之为包

# 导入模块

import...或者from... import..

"""导入模块会执行模块内代码产生一个模块的名称空间"""
重复导入只会执行一次


# 模块名起别名
    import ... as 别名
    from ... import ... as 别名
# 可以使用句点符来表示多层路径.只要从根目录开始就能避免出错

4.内置模块

# time模块
time.time() # 获取时间戳
time.sleep(3) # 让程序停止三秒运行.
print(time.strftime('%Y-%m-%d %H:%M:%S')) # 打印时间.


# datetime模块
datetime.date.today()
datetime.datetime.today()

------------------------------------------------------------------------

今日内容回顾

1.os模块

# 创建文件夹
# os.mkdir(r'文件夹01')  # 只能创建单级目录
# os.makedirs(r'文件夹02\文件夹03')  # 可以创建多级目录
# os.makedirs(r'文件夹03')

 

 

 

# 删除文件夹
# os.rmdir(r'文件夹01')
# os.rmdir(r'文件夹02\文件夹03')  # 默认只能删一级空目录
# os.removedirs(r'文件夹02\文件夹03\文件夹04')  # 可以删除多级空目录
# 查看
# print(os.listdir())  # 查看该路径下所有的文件及文件夹
# print(os.listdir('F:\\'))  # 查看指定路径下所有的文件及文件夹 \\为转义方式
# print(os.getcwd())  # 查看当前所在的路径
# os.chdir(r'文件夹03')  # 切换当前操作路径
# print(os.getcwd())  # 查看当前所在的路径
# 判别
# print(os.path.isdir(r'a.txt'))  # 判断是否是文件夹
# print(os.path.isdir(r'文件夹03'))
# print(os.path.isfile(r'a.txt'))  # 判断是否是文件
# print(os.path.isfile(r'文件夹03'))
# print(os.path.exists(r'a.txt'))  # 判断当前路径是否存在
# print(os.path.exists(r'文件夹03'))
#路径拼接:
由于mac和window操作系统不同,就用
res=os.path.join('D:\\,''123.txt')
给出两个路径系统会自动辨别
print(os.path.getsize(r'a.txt')) #显示文件大小,单位为字节数

hashlib模块

加密模块
将明文数据按照一定的逻辑编成密文数据.一般有数字和英文组成.
加密算法
    将明文数据按照一定的逻辑(每个算法内部逻辑都不一样)
        加密之后的密文不能反解密出明文 即是不可逆操作
    # 常见加密算法:md5 base64 hmac sha系列
 算法生成的密文越长表示该算法越复杂 安全级别就越高 但是在互联网的世界中是没有最安全,只有更安全
一般采用md5加密算法
# md5 = hashlib.md5()
# 将待加密的数据传入算法中
# md5.update(b'530156516')  # 数据必须是bytes类型(二进制)如果是中文就用encoding解码
# 获取加密之后的密文
# res = md5.hexdigest()
# print(res)
加盐处理:
md5.update('盐盐盐盐盐'.encode('utf8'))
md5.update(b'123')  # 数据必须是bytes类型(二进制)
# 获取加密之后的密文
res = md5.hexdigest()
print(res)
# 动态加盐
# 选择加密算法:一般情况下采用md5即可
md5 = hashlib.md5()
# 将待加密的数据传入算法中
# 加盐
md5.update('不固定 随机改变'.encode('utf8'))
md5.update(b'hello')  # 数据必须是bytes类型(二进制)
# 获取加密之后的密文
res = md5.hexdigest()
print(res)
  #不固定的条件,可以增加当前登录时间,可以增加安全系数

random模块

#随机返回0-1之间的小数
import random
print(random.random())
#随机返回一个指定区间的数字
print(random.randint(1,100)) #结果为整数
#随机返回一个结果
print(random.choices(['特等奖','一等奖','二等奖'])) #返回值为列表
print(random.choice(['一等奖','二等奖','谢谢回顾'])) # 直接返回元素
#随机抽取指定样本个数
print(random.sample([111, 222, 333, 444, 555, 666, 777], 2))#2位返回几个值
 #随机打乱元素
# l = [2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A", "小王", "大王"]
# random.shuffle(l)  # 洗牌 
# print(l)
进阶 随机验证码编程:
# 产生一个五位数随机验证码
每一位都可以是数字\小写字母\大写字母
code=''
for i in range(5):
    random_int= str(random.randint(0,9))

    random_upper=chr(random.randint(65,90))

    random_lower=chr(random.randint(97,122))
    sct=random.choice([random_int,random_lower,random_upper])
    code+=sct

print(code)

logging模块

 

 

 

import logging

file_handler = logging.FileHandler(filename='x1.log', mode='a', encoding='utf-8',)
logging.basicConfig(
    format='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S %p',
    handlers=[file_handler,],
    level=logging.ERROR
)

logging.error('你好') 
#关于记录日志的输出 仅做了解 

json模块

imort json
# 可以简单的理解为将其他类型转换成字符串,也可以将字符串转换成其他类型.
import json
d = {'username': 'jason', 'pwd': 123}
d1= json.dumps(d)
print(d1, type(d1)) # 序列化:将其他数据类型转换成json格式的字符串

 

 

 # 但是如果是自己手打"""其格式还是''

# res1 = json.loads(res)
# print(res1, type(res1))  #反序列化:将json格式字符串转换成对应语言的对应数据类型

 

 

 文件序列化:

# with open(r'a.txt','w',encoding='utf8') as f:
     # json.dump(d,f) # 文件序列化

文件反序列化:

# with open(r'a.txt','r',encoding='utf8') as f:
    # res = json.load(f)
    # print(res,type(res))

 

posted @ 2021-08-22 21:19  查无此人cxc  阅读(29)  评论(0编辑  收藏  举报