1.调用时
当有重名的时候,使用最后声明的同名函数
解决函数命名冲突问题:
~ 模块名.函数名 ----> 使用函数的完全限定名
~ 别名 ----> 在导入函数的时候,使用as关键字对其别名
2.参数
(1)函数的参数的说明:
~ / 前面的参数叫做"强制位置参数"(positional-only arguments),调用函数传递参数时只能对号入座不能写参数名
~ * 前面的参数叫做"位置参数"(positional arguments),调用函数传递参数时可以对号入座也可以带上参数名
~ * 后面的参数叫做"关键字参数"(keyword arguments),调用函数传递参数时必须写成"参数名=参数值"的形式
~ 注意:关键字参数绝不能出现在位置参数之前!!!
python
def is_triangle(a, b, c, /) -> bool:
"""判断三条边能否构成三角形"""
return a + b > c and b + c > a and a + c > b
def perimeter(*, a, b, c) -> float:
"""计算周长"""
return a + b + c
(2)可变参数
在设计函数时,如果函数接收的参数(自变量)的个数不能确定,我们可以使用可变参数和关键字参数来接收它们,如下所示:
python
def foo(*args, **kwargs):
pass
*args - arguments - 把所有的位置参数打包成一个元组
**kwargs - keyword arguments - 把所有的关键字参数打包成一个字典
3.赋值给变量
函数可以直接赋值给变量
python
px = sorted
print(px(words))
把函数作为另一个函数的参数
根据字符串的长度对元组中的字符串进行排序
python
print(px(words, key=len,))
sorted函数的key参数的值是另一个函数,这个函数会重新定义比较大小的规则
注意:把函数作为函数的参数传递时,只写函数名,不能写圆括号调用函数