python匿名函数lambda
爱测试的高胖胖 人气:01. python函数
1.1 函数的作用
- 函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码段
- 函数能提高应用的模块性和代码的重复利用率
- python 内置函数:https://docs.python.org/zh-cn/3.10/library/functions.html
1.2 函数定义
- def:函数定义关键词
- function_name:函数名称
- ():参数列表放置的位置,可以为空
- parameter_list:可选,指定向函数中传递的参数
- comments:可选,为函数指定注释
- function_body:可选,指定函数体
def function_name([parameter_list]): [''' comments '''] [function_body]
定义函数的注意事项:
缩进:python 是通过严格的缩进来判断代码块儿
- 函数体和注释相对于 def 关键字必须保持一定的缩进,一般都是 4 个空格
- pycharm 自动格式化快捷键:
ctrl+alt+L
定义空函数
- 使用
pass
语句占位- 写函数注释 comments、
1.3 函数调用
- function_name:函数名称
- parameter_value:可选,指定各个参数的值
function_name([parameter_value])
1.4 函数的参数
1.4.1 参数的传递
- 形式参数:定义函数时,函数名称后面括号中的参数
- 实际参数:调用函数时,函数名称后面括号中的参数
# a, b, c 为形式参数 def demo_func(a, b, c): print(a, b, c) # 1, 2, 3 为实际参数 demo_func(1, 2, 3)
1.4.2 参数类型
1.4.2.1 位置参数(必备参数)
- 数量必须与定义时一致
- 位置必须与定义时一致
def demo_func(a, b, c): print(a, b, c) # 1 赋值给 a, 2 赋值给 b, 3 赋值给 c demo_func(1, 2, 3)
1.4.2.2 关键字参数
- 使用形式参数的名字确定输入的参数值
- 不需要与形式参数的位置完全一致
def demo_func(a, b, c): print(a, b, c) demo_func(a=1, b=2, c=3)
1.4.2.3可变参数
- 可变参数也称为不定长参数
- 传入函数中实际参数可以是任意多个
- 常见形式
*args
**kwargs
1.4.2.3.1 *args
- 接收任意多个实际参数,并将其放到一个元组中
- 使用已经存在的列表或元组作为函数的可变参数,可以在列表的名称前加
*
def print_language(*args): print(args) print_language("python", "java", "php", "go") params = ["python", "java", "php", "go"] print_language(*params)
1.4.2.3.2 **kwargs
- 接收任意多个类似关键字参数一样显式赋值的实际参数,并将其放到一个字典中
- 使用已经存在字典作为函数的可变参数,可以在字典的名称前加
**
def print_info(**kwargs): print(kwargs) print_info(Tom=18, Jim=20, Lily=12) params = {'Tom':18, 'Jim':20, 'Lily':12} print_language(**params)
1.4.5 为参数设置默认值
- 定义函数时可以指定形式参数的默认值
- 指定默认值的形式参数必须放在所有参数的最后,否则会产生语法错误
param=default_value
:可选,指定参数并且为该参数设置默认值为 default_value- 设置默认值必须要使用不可用对象,可变对象不可以用,如:列表,字典。
def function_name(..., [param=default_value]): [function_body]
1.5 函数返回值
value:可选,指定要返回的值
def function_name([parameter_list]): [''' comments '''] [function_body] return [value]
2. python lambda表达式
2.1 匿名函数
- 没有名字的函数
- 用 lambda 表达式创建匿名函数
2.2 使用场景
- 需要一个函数,但是又不想费神去命名这个函数
- 通常在这个函数只使用一次的场景下
- 可以指定短小的回调函数
2.3 语法
- result:调用 lambda 表达式
- [arg1 [, arg2, …. , argn]]:可选,指定要传递的参数列表
- expression:必选,指定一个实现具体功能的表达式
result = lambda [arg1 [, arg2, .... , argn]]: expression
2.4 实例
L=[('b',2),('a',1),('c',3),('d',4)] # 2、利用参数 cmp 排序 sorted(L, cmp=lambda x,y:cmp(x[1],y[1])) # 结果: [('a', 1), ('b', 2), ('c', 3), ('d', 4)] # 3、利用参数 key 排序 sorted(L, key=lambda x:x[1]) # 结果: [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
加载全部内容