内置函数(二)装饰器及模块(一)
2019-07-28 16:27:28 0 举报
AI智能生成
内置函数(二),装饰器及模块(一)
作者其他创作
大纲/内容
模块
模块分类
内置模块
第三方模块
自定义模块
导入
import test
test是模块名
test.func()
func() 是test模块中的函数调用
导入的过程
当前的名称空间中开辟一个新的空间(test)
将模块中所有的代码执行
别名的使用
import test as t
兼容性
msg = \"\"\"1.扳手2.螺丝刀\"\"\"choose = input(msg)if choose == \"1\": import test as telif choose == \"2\": import meet as tt.func()
import 和 from的区别
把工具箱拿过来
from test import func
把工具拿过来
import的优缺点
优点
不会和当前文件定义的变量或者函数发生冲突
缺点
占用内存比较大
from的优缺点
占用内存比较小
会和当前文件定义的变量或者函数发生冲突
下面的变量或者函数会覆盖上面的
from 模块名 import *
注意会出现覆盖现象
获取内存地址
from test import fooprint(foo)
模块的用法
脚本(在cmd中执行 python test.py)
模块(不使用或者导入)
测试接口
if __name__ == \"__main__\"
在当前模块中使用__name__就是\"__main__\"
当模块被导入的时候__name__就是被导入的模块名
路径
导入路径
import meet
使用相对路径
from day15.t1 import meet
使用绝对路径
模块的查找顺序
自定义模块 > 内置模块 > 第三方
time模块(内置模块)
time的方法
时间戳print(time.time())# 时间戳 浮点数 可计算print(time.time() + 5000)睡眠time.sleep(3)# 睡眠 以秒为单位时间节点print(time.strftime(\"%Y-%m-%d %H:%M:%S\
datetime(对象)
datetime的方法
用处
记录日志时使用
计算时间时使用
random(随机)
random的方法
序列化
json
dumps loads
dumps 将对象转换成字符串(序列化)
loads 将字符串转换成对象(反序列化)
特例
dic = {\"k1\":\"名字\"}str_dic = json.dumps(dic)print(str_dic)# {\"k1\": \"\\u540d\\u5b57\"}
解决办法dic = {\"k1\":\"名字\
dump load
dump 将对象转换成字符串写入文件当中(序列化)
load 将文件中的字符串转换成对象(反序列化)
同时读取多个内容进行反序列
with open(\"info\
pickle
特殊情况
对象转换成乱码多行写入
dic = {\"1\":2}with open(\"info\
乱码转换对象全部读取
序列化(可对python所有对象进行转换)python自带的(只有python可以用)
dumps对象转换成类似字节
loads类似字节转换成对象
dump将对象转换成乱码写入对象
dic = {\"user\":\"baoyuan\
load将乱码转换成对象输出
os
os模块 -- 程序员通过python向操作系统发送指令(与操作系统交互的接口)
工作目录
当前工作路径 ***
print(os.getcwd())
路径切换 **
os.chdir(r\"D:\\pycharm demo\\123\")
文件夹
创建一个文件夹 ***
os.mkdir(\"ttt\")
删除一个文件夹 ***
os.rmdir(\"ttt\")
递归创建文件夹 ***
os.makedirs(\"ttt/sss/ddd/ee\")
递归删除文件夹 ***
os.removedirs(\"ttt/sss/ddd/ee\")
获取当前文件夹下所有文件名 ***
print(os.listdir())
文件
修改名字 ***
os.rename(\"123\
删除文件 ***
os.remove(\"info\")
通过相对路径获取绝对路径 ***
print(os.path.abspath(\"info\"))
获取路径 ***
print(os.path.dirname(\"D:\\pycharm demo\\info\"))
获取文件名 **
print(os.path.basename(\"D:\\pycharm demo\\info\"))
判断路径是否存在 ***
print(os.path.exists(\"D:\\pycharm demo\\info\"))
判断是不是路径 ***
print(os.path.isdir(r\"D:\\pycharm demo\"))
判断是不是文件名 ***
print(os.path.isfile(\"info\"))
判断是不是绝对路径 ***
print(os.path.isabs(\"D:\\pycharm demo\\info\"))
路径拼接 *****
print(os.path.join(\"D:\\\\\
获取当前文件的大小(返回字节b) ***
print(os.path.getsize(\"D:\\pycharm demo\\代码练习.py\"))
sys
sys -- 与python解释器交互的接口
print(sys.argv)
加密和校验 hashlib
常用的加密
特点
只要明文相同密文就是相同的
只要明文不相同密文就是不相同的
不能反逆(不能解密) -- md5中国人破解了
md5
sha1
sha256
sha512
加密的过程
加密的内容
将要加密的内容转成字节
import hashlibmd5 = hashlib.md5()md5.update(\"alex123\".encode(\"utf-8\"))print(md5.hexdigest())
sha1 = hashlib.sha1()sha1.update(\"alex123\".encode(\"utf-8\"))print(sha1.hexdigest())
加盐(二次加密)
加固定盐
md5 = hashlib.md5(\"alex\".encode(\"utf-8\"))md5.update(\"wusir\".encode(\"utf-8\"))print(md5.hexdigest())
加动态盐
user = input(\"user\")pwd = input(\"pwd\")import hashlibmd5 = hashlib.md5(user.encode(\"utf-8\"))md5.update(pwd.encode(\"utf-8\"))print(md5.hexdigest())
子主题
counter
内置函数(二)装饰器及模块(一)
内置函数
内置函数(二)
abs( )
绝对值 -- 返回的都是正数
print([abs(i) for i in lst])
enumerate( )
枚举(\"可迭代对象\
max( )
求最大值
key指定查找最大值的规则
min( )
求最小值
sum( )
求和
range( )
python2
获取的是一个列表
Xrange( )
获取的是一个可迭代对象
python3
open( )
文件操作
print( )
打印
print(sep=\" \
sep是多个元素的连接符
len( )
list( )
列表
dict( )
字典
zip( )
拉链 -- 按照最少的进行合并
dir( )
查看当前函数的方法
print(dir(list))
匿名函数
tips
一行函数
形参可以不写
定义及拆解
print(f.__name__)# lambda
print((lambda x:x)(2))# 2
同一行定义 同一行调用
lambda拆解
lambda
关键字 -- 定义函数
形参
:x+y
返回值 -- 只能返回一个数据类型
示例
lst = [lambda i:i*i for i in range(10)]print(lst[2])print(lst[2](2))
一条内存地址4
拆解
lst = []for i in range(10): def func(i): return i*i lst.append(func)print(lst[2](2))
示例2
lst = [lambda :i*i for i in range(10)]print(lst[2])print(lst[2]())
一条内存地址81
lst = []for i in range(10): def func(i): return i*i lst.append(func)print(lst[2]())
重要内置函数
format( )
格式
左对齐
居中
右对齐
进制转换
2进制
10进制
8进制
16进制
filter( )
过滤
map( )
对象映射加工
对可迭代对象中的每个元素进行加工
排序
sort( )
sorted( )
指定规则的排序
dic = {\"key\
反转
reverse( )
reversed( )
累计算
reduce( )
闭包
定义
print(foo()()().__closure__)判断是否闭包
def func(): a = 1 def f1(): def foo(): print(a) return foo return f1
获取自由变量
print(ret.__code__.co_freevars)
获取局部变量
print(ret.__code__.co_varnames)
作用
保证数据的安全性
装饰器
普通装饰器
用来装饰的工具
在不改变源代码及调用方式的基础上额外增加新的功能
开放封闭原则
扩展是开放的(增加新功能)
修改源码是封闭的(修改已经实现的功能)
标准版装饰器
语法糖
语法糖必须放在被装饰的函数正上方
@wrapper 就等于 func = wrapper(func)
有参装饰器
基本版
@auth(chose)
相等于以下两行代码的解构wrapper = auth(chose)foo = wrapper(foo)
多个装饰器装饰一个代码
0 条评论
回复 删除
下一页