lambda匿名函数
案例1:
# def函数写法
def add(a, b):
return a + b
print(add(10, 20))
print("-" * 50)
# lambda函数写法
add_lambda = lambda a, b: a + b
print(add_lambda(10, 20))
案例2:
# 使用if判断奇偶性
def get_odd_even(x):
if x % 2 == 0:
return "偶数"
else:
return "奇数"
print(get_odd_even(10))
# lambda函数写法
get_odd_even1 = lambda x: "偶数" if x % 2 == 0 else "奇数"
print(get_odd_even1(10))
def函数与lambda函数的区别:
- 1.lambda可以立即传递(无需变量),自行返回结果
- 2.lambda在内部只能包含一行代码
- 3.lambda是一个为编写简单函数而设计的,而def用来处理更大的任务
- 4.lambda可以定义一个匿名函数,而def定义的函数必须有一个名字
融入map(),对序列中每个元素进行操作,获取新的序列
from functools import reduce
def add(num):
return num ** 2
x = map(add, [1, 2, 3, 4, 5])
print(x)
print(list(x))
print("_" * 50)
y = map(lambda num: num ** 2, [1, 2, 3, 4, 5]) # map()对序列中的每个元素进行操作,获得新的序列
print(list(y))
x = filter(lambda num: num % 2 == 0, [1, 2, 3, 4, 5]) # filter()对序列中的每个元素筛选,获得新的序列
print(list(x))
list1 = [1, 2, 3, 4, 5]
list2 = reduce(lambda x, y: x + y, list1) # reduce()对序列中元素进行累加
print(list2)
可变参数
在我们不能在定义函数的时候就确定参数的数量和内容,这时候就可以使用可变参数。
基本形式:
some_func(*args, **kwargs)
案例:
def foo(*args):
print(args)
foo()
foo(1, 2)
foo("小逢", "xianning", 19)
输出结果:
()
(1, 2)
('小逢', 'xianning', 19)
从例子中可以看到,“*args”参数获取得到的是一个元组,这也正是它能作为可变参数的原因。
案例:
def foo(**kwargs):
print(kwargs)
foo()
foo(name="小逢")
结果:
{}
{'name': '小逢'}
“**kwargs”参数获取得到的是一个字典,所以我们在调用函数时也必须要使用关键字参数的方法来传递参数。
解决最开始的题
# 请在 ___ 划线处,替换成你的代码
# 创建函数,参数为可变数量的参数
def multiply_numbers(*args):
product = 1
for num in args:
product *= num
return product
# 输入三个整数
n1 = int(input())
n2 = int(input())
n3 = int(input())
# 调用函数
result = multiply_numbers(n1,n2,n3)
# 打印结果
print(result)