1. max()
我们以内置函数 max
为例进行说明:
max(iterable, *[, default=obj, key=func]) -> value
max(iterable,*[, key, default])
[]
表示里面的形参是可选项,max
函数可被如下几种形式调用:
max(iterable)
max(iterable,*, key)
max(iterable,*,default)
max(iterable,*, key, default)
函数形参列表中符号 *
是在 Python 3.8
版本中添加的,它的意思是后面的形参只能为关键字参数(keyword argument
),不能为位置参数(positional argument
),也就是说,max
函数使用方法:
In [81]: a = [1,2,3,4,5,3,3,2,5]
In [82]: max(a,key=lambda x: a.count(x), default=1)
Out[82]: 3
In [83]: max([],key=lambda x: a.count(x), default=1)
Out[83]: 1
max
有一个 default
参数:
- 当传入的列表为空时,若参数
default
被赋值,则返回default
; - 否则,会抛空序列的异常(
empty sequence
);
In [4]: max([],default='0')
Out[4]: '0'
In [5]: max([])
ValueError: max() arg is an empty sequence
x
表示 a
中的每一个元素, default=1
表示如果输入为空列表时,默认的返回值。
我们可以定义函数 func
,参数 b
位于 *
后面,这样参数 b
就只能为关键字参数:
In [84]: def func(a, *, b):
...: return a + b
...:
In [85]: func(3, 4)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-85-78c794e2c03d> in <module>
----> 1 func(3, 4)
TypeError: func() takes 1 positional argument but 2 were given
In [86]: func(3, b=4)
Out[86]: 7
max
返回最大值:
In [99]: max(3,1,4,2,1)
Out[99]: 4
In [100]: max((),default=0)
Out[100]: 0
In [89]: di = {'a':3,'b1':1,'c':4}
In [90]: max(di)
Out[90]: 'c'
In [102]: a = [{'name':'xiaoming','age':18,'gender':'male'},{'name':'
...: xiaohong','age':20,'gender':'female'}]
In [104]: max(a,key=lambda x: x['age'])
Out[104]: {'name': 'xiaohong', 'age': 20, 'gender': 'female'}
2. sum()
sum
函数的函数说明如下:
sum(iterable, start=0, /)
其中, start
表示求和的起始点,默认为 0。看到形参列表中有一个 /
,它表示 /
前的参数只能是位置参数,不能是关键字参数。
In [87]: a = [1,2,3,4,5]
In [88]: sum(a)
Out[88]: 15
In [89]: sum(a, 10)
Out[89]: 25
如果使用位置参数调用时就会报错:
In [90]: sum(a, start=10)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-90-08c03d232c88> in <module>
----> 1 sum(a, start=10)
TypeError: sum() takes no keyword arguments