要入Python门,先读廖雪峰。
▍函数参数如果默认
默认参数必须指向不变对象
eg. add_end(L=[])
每次调用函数,如果改变了L的内容,则下次调用时默认参数的内容就会发生变化
▍可变参数
可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple
▍关键字参数
关键字参数允许你传入0个或任意个含参数名的参数,这些可变参数在函数调用时自动组装为一个dict
▍命名关键字参数
有时候我们只接受已经限制名称的关键字参数
def limit_key_para(x, y, *, name, gender): bla bla..
如果前面已经有了一个可变参数,则不需要再加入*
def limit_change_key_para(x, y, *args, name, gender)
▍参数的顺序
参数定义的顺序为:必选参数,默认参数,可变参数,命名关键字参数,关键字参数
▍Decorator装饰器
1、访问函数对象名称:func_name.__name__
2、动态增强函数功能
def log(func):
def wrapper(*args, **kw):
print('func more %s' % func.__name___)
return func(*args, **kw)
return wrapper
@log
def now():
print('now')
以上的方法可能有麻烦,就是增加Decorator的now函数的now.__name__会是wrapper
所以需要增加functools.wraps~~
import functools
def log(func):
@functools.wraps(func)
def wrapper(*args, **kw):
print('func more %s' % func.__name___)
return func(*args, **kw)
return wrapper
▍偏函数
1、概念:将函数中的某些参数固定住(设置默认值),返回一个新函数,调用这个函数更加简单
2、示例:int(args, base=n)