sort方法实现
students = [{'color': 'red', 'value': 250}, {'color': 'green', 'value': 200},{'color': 'blue', 'value': 195}]
def info(para):
return para['color'] # 排序比较规则
students.sort(key = info) # 赋值给key的函数较为简单,可以改为lambda表达式:key = lambda para: para['color']
print(students)
filter内置类,对可迭代对象过滤得到一个filter类型的可迭代对象
value = [10, 20, 30]
m = filter(lambda para: para > 20, value) # 第一个参数是函数,第二个参数是可迭代对象。满足大于20的值保留
for x in m:
print(x)
map用法类似filter
value = [10, 20, 30]
m = map(lambda para: para > 20, value) # 第一个参数是函数,第二个参数是可迭代对象。比较运算,大于为True,否则为false
for x in m:
print(x)
装饰器
在不更改原函数代码的基础上增加功能(代码运行期间动态增加功能),增加的部分称为装饰器。
def study():
print("好好学习,天天向上")
# 增加函数study()的功能,函数deco(func)称为装饰器
def deco(func):
def inner():
print("成功乃失败之子") # 增加功能部分
func()
return inner
deco(study)() # deco(study)的返回值是inner,指向函数inner()
# 装饰器在被装饰的函数前面
def deco(func):
def inner():
print("成功乃失败之子") # 增加功能部分
func()
return inner
@deco # @ 标识符直接将装饰器应用到 study() 函数上
def study():
print("好好学习,天天向上")
study() #直接调用即可
import time
def cal_time(fun):
"""
计算代码运行时间
"""
def inner(m, *args, **kargs):
start_time = time.time()
value = fun(m)
end_time = time.time()
print(end_time-start_time)
return value
return inner
@cal_time # 1.调用cal_time 2.将demo传递给fun
def demo(n):
x = 0
for i in range(1, n):
x += i
print(x)
demo(1000) # 由于demo已经传递给fun,执行结果为返回inner,此时demo()将调用inner()函数,inner函数返回什么,此调用即返回什么