标签:ase 释放 条件 需求 print map res 默认参数 元素
例如
def put(num):
print(num)
def wrapper():
nonlocal num
num +=20
print(num)
return wrapper
fun = put(0)
fun()
此函数运行过程为:先依次从上往下运行,直到fun = put(0)语句,该语句为调用函数put,则执行函数put,输出结果为0,fun = wrapper,返回一个函数给fun,然而没有调用。当继续执行程序fun()时,程序运行的为wrapper函数,因为上面已经的num已经有值(nonlocal为不是本地变量的意思),所以函数会输出20
优点:不需要修改原代码,即可实现对原函数功能的扩充;利于后期代码的维护
**(装饰器本质上是一个python函数,他可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,装饰器也是一个函数对象。他经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理等。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用)
import time
import functools
def log_time(fun):
@functools.wraps(fun)
def jj(*args1,**kb):
print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))
return fun(*args1,**kb)
return jj
@log_time # now = log_time(now)
def now(*a):
print(a)
now(19,20)
#定义一个自带参数的装饰器
def log(txt):
def de(fun):
@functools.wraps(fun)
def wrapper(*m,**km):
print(txt,end = ‘‘)
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
return fun(*m,**km)
return wrapper
return de
@log(‘对应时间是:‘)#等价于max_num = log(‘对应时间是:‘)fun(max_num)
def max_num(num1,num2):
print(max(num1,num2))
max_num(2,43)
列表遍历:
def callBack(num):
num **= 2
return num
list1 = [x for x in range(10)]
result = map(callBack,list1)
print(list(result))#map(fun,list):map用来对列表list的遍历操作,每一次遍历都会自动调用fun函数完成对本次遍历所得到的元素的计算,当遍历结束后返回一个map对象
6.列表过滤:
list2 = [1,3,4,54,5,4,3,35,"sdf","dsf"]
li = filter(lambda x:isinstance(x,int),list2)
print(list(li))#列表过滤:filter(fun,list)用来遍历列表list,按照给定的过滤条件,完成对满足条件的数据保存,不满足条件的进行过滤(删除)的操作。其中fun是回调函数,充当过滤的条件
7.#偏函数
import functools
int2 = functools.partial(int,base = 2)#将指定的函数和函数中默认值的参数进行绑定,生成一个新的函数,比如吧int函数和int的默认参数base绑定生成一个新函数int2,int2此时进行数据转换时按二进制进行转换
result = int2("10101000010100")
print(result)
标签:ase 释放 条件 需求 print map res 默认参数 元素
原文地址:https://www.cnblogs.com/rose1jj/p/9374810.html