版权声明:诸葛老刘所有 https://blog.csdn.net/weixin_39791387/article/details/84317054
文章目录
最近在进阶, 更系统更深入的学习python, 总结下
1. 可以接受任意数量的参数
def anyargs(*args, **kwargs):
print(args) # A tuple
print(kwargs) # A dict
在上面的函数中,所有的位置参数
都会放到元组args
中, 所有关键字参数
都会放到字典kwargs
中.
2. 将元数据信息附加到函数参数上
def add(x:int, y:int) -> int:
return x + y
通常只有类和字符串
最有意义
3. 定义带有默认参数的函数
注意:
- 默认参数的赋值只会在函数定义的时候绑定一次
- 给默认参数赋值的应该总是
不可变对象
, 比如None, True, False,数字或字符串
# 不要这么写,为什么? 请参考cookbook 227页.
def func(a, b=[]):
return a, b
# 可以这么写
def func(a, b=None):
if not b:
b = []
4. (推荐学习)让带有N个参数的可调用对象以较少的参数形式调用
如果要减少函数的参数数量, 应该使用functools.partial()
, 函数partial()
允许我们给一个或多个参数指定固定的值,以此减少需要提供给之后调用的参数数量.假设有这么一个函数
def func(a, b, c, d):
print(a, b, c, d)
现在使用partial() 来对参数进行赋固定的值 :
# 引入依赖包
In [1]: from functools import partial
# 定义一个测试函数
In [2]: def func(a, b, c, d):
...: print(a, b, c, d)
...:
# 给出一个固定值, 若没有指定参数名, 则按位置依次赋值给参数
In [3]: s1 = partial(func, 10)
In [4]: s1(20,30,40)
10 20 30 40
In [5]: s2 = partial(func, 10, 30)
In [6]: s2(40, 60)
10 30 40 60
# 固定值赋值给指定的参数
In [7]: s3 = partial(func, d=100)
In [8]: s3(200,300,500)
200 300 500 100
5. 用函数替代只有单个方法的类
在多数情况下,只有单个方法的类可以通过闭包(closure)将其转换成函数.