0%

python装饰器与偏函数

装饰器与偏函数

装饰器作用在函数上,为函数提供额外功能,并返回函数。可用来检查函数的参数是否合理,打印函数的执行时间等等。

偏函数则用来为函数传递默认参数。

装饰器

检查函数参数合法性实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def check_args(func):
def inner(*args, **kv):
# 检查age参数合法性
if len(args) > 0 and isinstance(args[0], int) and args[0] < 0:
args = (0, ) + args[1:]
if 'age' in kv and isinstance(kv['age'], int) and kv['age'] < 0:
kv['age'] = 0
return func(*args, **kv)
return inner


@check_args
# def print_age(age=0):
def print_age(age):
print('fred is %d years old.' % age)


print_age(age=100)
print_age(age=-100)
print_age(100)
print_age(-100)
# print_age()

运行结果:

1
2
3
4
fred is 100 years old.
fred is 0 years old.
fred is 100 years old.
fred is 0 years old.

偏函数

偏函数传递默认参数

1
2
3
4
import functools

int2 = functools.partial(int, base=2)
print(int2('1010'))

运行结果:

1
10

end