返回函数
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 排序算法
print(sorted([23,2,34,56,1,-20]))
# 接收一个key函数来实现自定义排序.
'''
key指定的函数将作用域list的每一个元素上,并根据key函数返回的结果进行排序。
'''
print(sorted([36,-5,-12,9,-21],key=abs))
# 忽略大小写排序
print(sorted(['Bob','tom','james','Credit'],key=str.lower))
# 反向排序,传入第三个参数reverse=True
print(sorted(['Bob','tom','james','Credit'],key=str.lower,reverse=True))
匿名函数
# 匿名函数
'''
匿名函数lambda x : x * x
1. 关键字lambda表示匿名函数
2. 冒号前面的x表示函数参数
3. 匿名函数只能有一个表达式,不能写return,返回值就是该表达式的结果
'''
装饰器
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 装饰器
'''
1. 在代码运行期间动态增加功能的方式,称为装饰器(Decorator)
2. 定义wrapper()的前面加上@functools.wraps(func)即可
'''
import functools
# 不带参数
'''
def log(func):
@functools.wraps(func)
def wrapper (*args, **kw):
print('call %s():' % func.__name__) # 函数对象有一个__name__属性,可以拿到函数的名字
return func(*args, **kw)
return wrapper
def now():
print('2018-07-10')
print(now.__name__)
now = log(now)
print(now())
print(now.__name__)
'''
# 带参数
def log(text):
def decorator(func):
@functools.wraps(func)
def wrapper(*args, **kw):
print('%s %s():' % (text, func.__name__))
return func(*args, **kw)
return wrapper
return decorator
def now():
print('2018-07-10')
now = log('Tom')(now)
print(now())
偏函数
# 偏函数
'''
1. functools.partial的作用就是:把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单
2. 创建偏函数时,实际上可以接收函数对象、*args和**kw这3个参数
'''
import functools
int2 = functools.partial(int, base=2)
print(int2('10000000'))