Contents
4.2. 偏函数¶
当函数的参数个数太多,需要简化时, 使用functools.partial可以创建一个新的函数, 这个新函数可以固定住原函数的部分参数,从而在调用时更简单。简化了传参的过程
from functools import partial, wraps
def add(x, y):
return x + y
# 给函数的参数绑定一个默认值
add1 = partial(add, 3)
x1 = add(3, 9)
print(x1) #12
x = add1(9)
print(x) #12
4.2.1. 偏函数代码示例¶
#!/usr/bin/env python
# -*- coding:utf8 -*-
# auther; 18793
# Date:2019/12/22 13:08
# filename: 偏函数的使用.py
'''
偏函数通过将任意数量(顺序)的参数, 转化为另一个带有剩余参数的函数对象,从而实现了截取函数功能(偏向)的效果。
在实际应用中,可以使用一个原函数,然后将其封装多个偏函数,在调用函数时全部调用偏函数。这样的代码可读性提升了很多。
'''
from functools import partial
def recoder(strname, age):
print("姓名:{} 年龄: {}".format(strname, age))
Garfun = partial(recoder, strname="hujiali")
Garfun(age=22)
4.2.2. @wraps 消除装饰器带来的副作用¶
当函数被装饰完后,对函数的名字属性再赋一次值,将函数的名称恢复过来。 这样就可以避免出现装饰完后函数名字变化的现象。
#!/usr/bin/env python
# -*- coding:utf8 -*-
# auther; 18793
# Date:2019/10/29 18:55
# filename: test4.py、
from functools import wraps
def decorator1(func):
@wraps(func) # 消除装饰器带来的副作用。
def wrapper(*args, **kwargs):
"""
:param args:可变位置参数
:param kwargs: 关键字参数
:return:
"""
func(*args, **kwargs) # func = house
print("铺地板")
print("刷漆")
return wrapper
@decorator1
def house():
"""
我是house函数,
:return:
"""
print("---------->毛坯房")
house()
# print(house.__name__) # 此时出现的是装饰器的名称和文档注释
# print(house.__doc__)
print(house.__name__)
print(house.__doc__)
'''
---------->毛坯房
铺地板
刷漆
house
我是house函数,
:return: