装饰器-内置函数
Posted sandy-123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了装饰器-内置函数相关的知识,希望对你有一定的参考价值。
装饰器
装饰内容的一个工具 本质是闭包
开放封闭原则(写代码必须遵守):
1.对扩展开放
2.对修改源代码封闭
3.不改变调用方式
作用:在不改变源代码的基础上,新增功能
import time print(time.time()) #时间戳 每次打印时间不一样,跟着时间在变 time.sleep() #定义睡眠时间
语法糖
在被装饰的函数正上方,加一个@装饰器的名字 独占一行
被装饰的函数名 = 装饰器的名字(被装饰的函数名)
import time def inner(x): def wapeer(): s_time = time.time() x() ss_time = time.time() print(ss_time - s_time) return wapeer @inner #foo = inner(foo) def foo(): time.sleep(3) #睡眠时间为3秒 print(‘is foo‘) foo()
当被装饰的函数内自带参数时:
import time def inner(x): def wapeer(*args,**kwargs): s_time = time.time() x(*args,**kwargs) ss_time = time.time() print(ss_time - s_time) return wapeer def num_sum(*args,**kwargs): print(*args,**kwargs) num_sum = inner(num_sum) num_sum(2,3,5,3,7)
一个函数可以对应多个装饰器
装饰器应用:增加一些功能,校验用户登录的时候 Django 面向对象
内置函数
abs(值) 绝对值
all(可迭代数据) 检查可迭代对象的每一个元素是不是为真 只有都为真 才返回True
any(可迭代数据) 检查可迭代对象的每一个元素是不是为真 只要有一个为真就是True
ascii() 如果在ascii码中,就原生显示,不在ascii中,显示u...
bytearray(‘...‘,encoding = ‘utf-8‘)
bytes(‘...‘,encoding = ‘utf-8‘)
callable() 判断是不是可调用 返回布尔值
chr(码位) 对应ascii码 显示码位对应的内容
complex() 实数和虚数
enumerate(可迭代对象,起始值) 枚举 起始值不写的时候默认是0,也可以自己定义起始值
li = [1,2,3,4,5] for i,e in enumerate(li): print(i,e) 结果: 0 1 1 2 2 3 3 4 4 5
eval 执行部分字符串中的内容 在开发中禁止使用
exec 执行字符串中的内容 禁止使用
float(浮点数) 浮点 可以把整型转正浮点型
format 可以作为字符串方法,单独使用作为内置函数
for(‘meet‘,‘>20‘) 右对齐
for(‘meet‘,‘<20‘) 左对齐
for(‘meet‘,‘^20‘) 居中
hash 哈希,确认哪些数据可以当做字典的键 有值就是可以
help 帮助查看官方文档的方法
max 比较每一个元素,取最大值
min 比较每一个元素,取最小值
sum 求和,里面放可迭代数据
memoryview(b‘内容‘) 求字节的地址地址
ord 查看unicode表位
pow(2,3) 两个参数的时候,幂(2的3次幂)
pow(2,3,3) 三个参数的时候,求幂后再取余
print(‘你好‘,end = ‘‘) 取消换行符
print(‘你好‘,sep = ‘|‘) 插入管道符
repr 显示数据的原生
reversed 反转 迭代器
round() 大约,四舍五入,第一个参数是浮点数,第二个参数是要保留的小数位
zip 拉链
lst = [1,2,3,4] lst = [1,2,3] for i in zip(lst,lst1): print(i) 结果: (1,1) (2,2) (3,3) #如果长度不统一,按照最短的来
lambda 匿名函数
lambda 参数:返回值
print((lambda x:x+x)(3))
匿名参数的时候定义和函数 没有def 没有函数名 查看函数名用__name__
有形参,可以接收多个
返回值只能用一个
匿名函数是没有名字的,赋值的变量只是方便调用,调用的时候要传参
sorted(可迭代对象) 默认升序
sorted(可迭代对象,reverse = True) 降序
sorted(‘可迭代对象‘,key=‘函数名‘(函数名里写排序规则),reverse = true的时候是降序)
lst = [‘dfhjk‘,‘swty‘,‘sewqea‘] print(sorted(lst,key = lambda x:len(x),reverse=True)) #key是一种排序的规则,不写的话就以数字的大小去排序,写了就按照规则排序 结果: [‘sewqea‘, ‘dfhjk‘, ‘swty‘]
filter 筛选过滤
filter(‘写好过滤规则的函数‘,可迭代对象) 函数可以是匿名的,也可以是定义好的
lst = [1,2,3,4,5,6,7] dic = [{‘name‘:‘alex‘,‘age‘:19},{‘name‘:‘wusir‘,‘age‘:16}] print(list(filter(lambda x:x[‘age‘]>17,dic))) print(list(filter(lambda x:x>3,lst))) 结果: [{‘name‘: ‘alex‘, ‘age‘: 19}] [4, 5, 6, 7]
map 映射函数 可以快速将多个元素相同的可迭代对象进行相同索引的一一累加
lst = [1,2,3,4] print(list(map(lambda x:x**2,lst))) print(list(map(lambda x:x**x,lst))) print(list(map(lambda x:x**x+1,lst)))
结果:
[1, 4, 9, 16]
[1, 4, 27, 256]
[2, 5, 28, 257]
lst = [1,2,3,4]
def func(x):
return x**2
print(list(map(func,lst)))
结果:
[1, 4, 9, 16]
lst1 = [2,3,4,5]
lst2 = [3,4,5,6]
print(list(map(lambda x,y:x+y,lst1,lst2)))
结果:
[5, 7, 9, 11]
reduce 累 计算 快速求一个可迭代对象的累计算
from functools import reduce #python3导入方式 lst = [1,2,3,4] print(reduce(lambda x,y:x**2,lst)) 结果: 1
以上是关于装饰器-内置函数的主要内容,如果未能解决你的问题,请参考以下文章