装饰器-内置函数

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

 


























以上是关于装饰器-内置函数的主要内容,如果未能解决你的问题,请参考以下文章

装饰器生成器迭代器及python中内置函数的使用

python笔记5:装饰器内置函数json

python基础--定义装饰器(内置装饰器)

装饰器 内置函数

13装饰器和内置函数

python学习--装饰器生成器内置函数json