Python面试必备二之 lambda 表达式、函数传参 args 和 kwargs、垃圾回收机制和上下文管理器

本文首发于公众号:Hunter后端

原文链接:Python面试必备二之 lambda 表达式、函数传参 args 和 kwargs、垃圾回收机制和上下文管理器

本篇笔记主要介绍 Python 面试过程中关于 Lambda 表达式、函数传参、垃圾回收机制等问题,大致如下:

  1. Python 中 Lambda 表达式是什么,有什么用
  2. 函数的参数 args 怎么用,kwargs 怎么用
  3. Python 怎么进行垃圾回收,都有哪几种类型
  4. Python 上下文是什么,怎么定义上下文

以下是本篇笔记目录:

  1. Lambda 表达式
  2. 函数传参 args 和 kwargs
  3. 垃圾回收机制
  4. 上下文管理器

1、Lambda 表达式

Lambda 表达式,即 Lambda 函数,是一个匿名函数,也就是说我们可以创建一个不需要定义函数名的函数。

1. Lambda 函数的定义和调用

比如对于下面的两数相加的函数:

def add(x, y):
    return x + y

我们可以使用 lambda 函数表示如下:

add_lambda = lambda x, y: x + y

对于 add 函数和 add_lambda 匿名函数,这两个函数的效果是一致的,都是对于输入的两个参数进行相加,然后返回:

print(add(1, 3))

print(add_lambda(1, 3))

Lambda 函数的定义方式其实很简单:

lambda x, y: x + y

使用 lambda 修饰,表示定义一个函数,之后跟着的 x 和 y 表示输入的参数,冒号 : 后跟着的即为需要 return 的函数逻辑,这里是相加。

2. Lambda 函数的使用

除了前面直接调用的使用场景,Lambda 还有一个比较常用的场景,就是用在 Python 的内置函数中,比如 map,sorted 等。

下面以两个示例来介绍 Lambda 的使用。

1) 获取两个列表对应位置之和

给定两个列表,获取这两个列表对应索引位置的和,形成一个新列表返回,这里使用 Python 的 map 函数和 Lambda:

a = [1, 2, 3]
b = [4, 5, 6]

c = list(map(lambda x, y: x + y, a, b))
print(c)
# [5, 7, 9]

这里使用的 Lambda 函数接收两个参数,其来源是 a 和 b 两个列表。

2) 对字典列表根据指定 key 排序

我们有一个字典列表如下:

s = [{
   "a": 6}, {
   "a": 19}, {
   "a": 3}, {
   "a": 7}]

如果我们想要对其根据元素的 a 这个 key 的值进行从小到大进行排序,其操作如下:

sort_s = sorted(s, key=lambda x: x["a"])
print(sort_s)
# [{'a': 3}, {'a': 6}, {'a': 7}, {'a': 19}]

2、函数传参 args 和 kwargs

当我们定义一个函数的时候,需要为其指定参数,比如一个两数相加的函数示例如下:

def add(x, y):
    return x + y

而如果我们想要实现一个函数,可能会传入两个数,也可能传入三个、四个,甚至七八个数字,然后返回其和,这个能实现吗?

可以,这个就需要用到我们的可变参数了,也就是这里的 args 和 kwargs。

1. args

在定义函数中,如果我们不确定会传入多少个参数,我们可以使用 args 这个可变参数,它的作用是将不定量的参数按照顺序以 tuple 元组传入,在函数的定义中,前面加一个 * 号即可完成定义。

比如我们想实现一个不定量数字相加然后返回的函数:

def add_n(*args):
    print("参数 args 内容为:", args)
    total = 0
    for num in args:
        total += num
    return total

print(add_n(1, 2))
print(add_n(1, 2, 3, 4))
print(add_n(1, 2, 3, 4, 5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值