100 个基本 Python 面试问题第五部分(69-80)

简介: 100 个基本 Python 面试问题第五部分

Q-69:什么是 Python 生成器?


Generator 是一种函数,它让我们指定一个函数,它的作用类似于迭代器,因此可以在“for”循环中使用。


在生成器函数中,yield 关键字替代了 return 语句。


def fn():
    return "简单的 Python 函数"
def generate():
    yield "Python 生成器函数"
print(next(generate()))
输出是:
Python 生成器函数



Q-70:Python 中的闭包是什么?


Python 闭包是由另一个函数返回的函数对象。我们使用它们来消除代码冗余。


在下面的例子中,我们编写了一个简单的乘法闭包。


def multiply_number(num):
    def product(number):
        'product() here is a closure'
        return num * number
    return product
num_2 = multiply_number(2)
print(num_2(11))
print(num_2(24))
num_6 = multiply_number(6)
print(num_6(1))
输出是:
22
48
6


Q-71:Python 中的装饰器是什么?


Python 装饰器使我们能够动态地向给定对象添加新行为。在下面的示例中,我们编写了一个简单的示例来显示函数执行前后的消息。


def decorator_sample(func):
    def decorator_hook(*args, **kwargs):
        print("函数调用前")
        result = func(*args, **kwargs)
        print("函数调用后")
        return result
    return decorator_hook
@decorator_sample
def product(x, y):
    "两个数相乘的函数"
    return x * y
print(product(3, 3))
输出是:
函数调用前
函数调用后
9



Q-72:你如何在 Python 中创建字典?


让我们以建筑工地统计为例。为此,我们首先需要使用冒号(“:”)拆分键值对。键应该是不可变类型,也就是说,我们将使用不允许在运行时更改的数据类型。我们将从整数、字符串或元组中进行选择。


但是,我们可以采用任何类型的值。为了区分数据对,我们可以使用逗号(“,”)并将整个内容保留在花括号({…})中。


>>> site_stats = {'site': 'tecbeamers.com', 'traffic': 10000, "type": "organic"}
>>> type(site_stats)
<class 'dict'>
>>> print(site_stats)
{'type': 'organic', 'site': 'tecbeamers.com', 'traffic': 10000}


Q-73:你如何在 Python 中读取字典?


要从字典中获取数据,我们可以使用键直接访问。我们可以在提到字典对应的变量名后使用方括号 […] 将“key”括起来。


>>> site_stats = {'site': 'tecbeamers.com', 'traffic': 10000, "type": "organic"}

>>> print(site_stats["traffic"])


我们甚至可以调用 get 方法从字典中获取值。它还让我们设置一个默认值。如果缺少密钥,则会发生 KeyError。


>>> site_stats = {'site': 'tecbeamers.com', 'traffic': 10000, "type": "organic"}

>>> print(site_stats.get('site'))

tecbeamers.com



Q-74:如何在 Python 中遍历字典对象?


我们可以使用“for”和“in”循环来遍历字典对象。


>>> site_stats = {'site': 'tecbeamers.com', 'traffic': 10000, "type": "organic"}
>>> for k, v in site_stats.items():
    print("The key is: %s" % k)
    print("The value is: %s" % v)
    print("++++++++++++++++++++++++")
输出是:
The key is: type
The value is: organic
++++++++++++++++++++++++
The key is: site
The value is: tecbeamers.com
++++++++++++++++++++++++
The key is: traffic
The value is: 10000
++++++++++++++++++++++++



Q-75:你如何在 Python 中向字典添加元素?


我们可以通过使用新键修改字典来添加元素,然后为其设置值。


>>> #设置一个空白字典
>>> site_stats = {}
>>> site_stats['site'] = 'google.com'
>>> site_stats['traffic'] = 10000000000
>>> site_stats['type'] = 'Referral'
>>> print(site_stats)
{'type': 'Referral', 'site': 'google.com', 'traffic': 10000000000}
我们甚至可以在 update() 方法的帮助下连接两个字典以获得更大的字典。
>>> site_stats['site'] = 'google.co.in'
>>> print(site_stats)
{'site': 'google.co.in'}
>>> site_stats_new = {'traffic': 1000000, "type": "social media"}
>>> site_stats.update(site_stats_new)
>>> print(site_stats)
{'type': 'social media', 'site': 'google.co.in', 'traffic': 1000000}



Q-76:如何在 Python 中删除字典的元素?


我们可以使用 del() 方法删除字典中的键。


>>> site_stats = {'site': 'tecbeamers.com', 'traffic': 10000, "type": "organic"}

>>> del site_stats["type"]

>>> print(site_stats)

{'site': 'google.co.in', 'traffic': 1000000}


我们可以使用的另一种方法是 pop() 函数。它接受密钥作为参数。另外,第二个参数,如果键不存在,我们可以传递一个默认值。


>>> site_stats = {'site': 'tecbeamers.com', 'traffic': 10000, "type": "organic"}

>>> print(site_stats.pop("type", None))

organic

>>> print(site_stats)

{'site': 'tecbeamers.com', 'traffic': 10000}



Q-77:你如何检查字典中键的存在?


我们可以使用 Python 的“in”运算符来测试 dict 对象中是否存在键。


>>> site_stats = {'site': 'tecbeamers.com', 'traffic': 10000, "type": "organic"}

>>> 'site' in site_stats

True

>>> 'traffic' in site_stats

True

>>> "type" in site_stats

True


早些时候,Python 还提供了已被弃用的 has_key() 方法。


回到目录


Q-78:Python 中列表推导式的语法是什么?


列表推导式的签名如下:


[ expression(var) for var in iterable ]

1

例如,下面的代码将返回从 10 到 20 的所有数字并将它们存储在一个列表中。


>>> alist = [var for var in range(10, 20)]

>>> print(alist)




Q-79:Python 中字典理解的语法是什么?


字典的语法与列表推导式的语法相同,但不同之处在于它使用大括号:


{ aKey, itsValue for aKey in iterable }

1

例如,下面的代码将返回所有数字 10 到 20 作为键,并将这些数字的相应平方存储为值。


>>> adict = {var:var**2 for var in range(10, 20)}

>>> print(adict)


Q-80:Python 中生成器表达式的语法是什么?


生成器表达式的语法与列表推导式匹配,但不同之处在于它使用括号:


( expression(var) for var in iterable )

1

(表达式(var) for var in iterable )

例如,下面的代码将创建一个生成器对象,该对象在使用时生成 10 到 20 的值。


>>> (var for var in range(10, 20))

at 0x0000000003668728>

>>> list((var for var in range(10, 20)))


目录
相关文章
|
2月前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
2月前
|
Java C++ Python
【面试宝典】深入Python高级:直戳痛点的题目演示(下)
【面试宝典】深入Python高级:直戳痛点的题目演示(下)
|
2月前
|
设计模式 Unix Python
【面试宝典】深入Python高级:直戳痛点的题目演示(上)
【面试宝典】深入Python高级:直戳痛点的题目演示(上)
|
5月前
|
数据采集 机器学习/深度学习 数据可视化
了解数据科学面试中的Python数据分析重点,包括Pandas(DataFrame)、NumPy(ndarray)和Matplotlib(图表绘制)。
【7月更文挑战第5天】了解数据科学面试中的Python数据分析重点,包括Pandas(DataFrame)、NumPy(ndarray)和Matplotlib(图表绘制)。数据预处理涉及缺失值(dropna(), fillna())和异常值处理。使用describe()进行统计分析,通过Matplotlib和Seaborn绘图。回归和分类分析用到Scikit-learn,如LinearRegression和RandomForestClassifier。
108 3
|
5月前
|
Python
155. 最小栈 力扣 python 空间换时间 o(1) 腾讯面试题
155. 最小栈 力扣 python 空间换时间 o(1) 腾讯面试题
|
5月前
|
存储 算法 索引
1124. 表现良好的最长时间段 (python) 前缀和 分类讨论 最大长度 力扣 面试题
1124. 表现良好的最长时间段 (python) 前缀和 分类讨论 最大长度 力扣 面试题
|
5月前
|
算法 Java Linux
python中的面试常考知识点
python中的面试常考知识点
|
7月前
|
存储 数据可视化 算法
最新Python-Matplotlib可视化(9)——精通更多实用图形的绘制,2024年最新小米面试题库
最新Python-Matplotlib可视化(9)——精通更多实用图形的绘制,2024年最新小米面试题库
最新Python-Matplotlib可视化(9)——精通更多实用图形的绘制,2024年最新小米面试题库
|
7月前
|
数据采集 Java 数据挖掘
最新Python+OpenCV+dlib汽车驾驶员疲劳驾驶检测!,2024年最新网易云java面试
最新Python+OpenCV+dlib汽车驾驶员疲劳驾驶检测!,2024年最新网易云java面试
最新Python+OpenCV+dlib汽车驾驶员疲劳驾驶检测!,2024年最新网易云java面试
|
7月前
|
数据采集 算法 网络协议
最新Python 面试常见问题(1),2024年最新面试官必问的10个问题
最新Python 面试常见问题(1),2024年最新面试官必问的10个问题
最新Python 面试常见问题(1),2024年最新面试官必问的10个问题
下一篇
DataWorks