100 个基本 Python 面试问题第七部分(91-100)

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

Q-91:你如何用 Python 调试程序?是否可以单步执行 Python 代码?


是的,我们可以使用 Python 调试器 ( pdb ) 来调试任何 Python 程序。如果我们使用pdb启动一个程序,那么它甚至可以让我们单步执行代码。




Q-92:列出一些用于调试 Python 程序的 PDB 命令?


以下是一些用于开始调试 Python 代码的 PDB 命令。


添加断点(b)

恢复执行©

分步调试(s)

移至下一行(n)

列出源代码(l)

打印表达式§



Q-93:调试 Python 程序的命令是什么?


以下命令有助于在调试模式下运行 Python 程序。


$ python -m pdb python-script.py



Q-94:你如何在 Python 中监控程序的代码流?


在 Python 中,我们可以使用 sys 模块的settrace() 方法来设置跟踪挂钩并监视程序内部的函数。


您需要定义一个跟踪回调方法并将其传递给settrace() 函数。回调应指定三个参数,如下所示。


import sys
def trace_calls(frame, event, arg):
    # 'call' 事件发生在函数执行之前。
    if event != 'call':
        return
    # 接下来,检查帧数据和打印信息。
    print 'Function name=%s, line num=%s' % (frame.f_code.co_name, frame.f_lineno)
    return
def demo2():
    print 'in demo2()'
def demo1():
    print 'in demo1()'
    demo2()
sys.settrace(trace_calls)
demo1()



Q-95:为什么以及何时在 Python 中使用生成器?

Python 中的生成器是一个返回可迭代对象的函数。我们可以使用yield 关键字迭代生成器对象。但是我们只能这样做一次,因为它们的值不会持久存在于内存中,它们会即时获取值。


生成器使我们能够保持函数或步骤的执行,只要我们想保留它。然而,这里有几个例子说明使用生成器是有益的。


我们可以用生成器替换循环,以有效地计算涉及大数据集的结果。

当我们不想要所有结果并希望推迟一段时间时,生成器很有用。

我们可以用生成器代替回调函数,而不是使用回调函数。我们可以在函数内部编写一个循环,做与回调相同的事情,并将它变成一个生成器。

回到目录


Q-96:yield 关键字在 Python 中有什么作用?


yield 关键字可以将任何函数转换成发电机。它的工作原理类似于标准的 return 关键字。但它总是会返回一个生成器对象。此外,一个方法可以多次调用yield 关键字。


请参阅下面的示例。


def testgen(index):
  weekdays = ['sun','mon','tue','wed','thu','fri','sat']
  yield weekdays[index]
  yield weekdays[index+1]
day = testgen(0)
print next(day), next(day)
# 输出: sun mon



Q-97:如何将列表转换为其他数据类型?


有时,我们不会按原样使用列表。相反,我们必须将它们转换为其他类型。


将列表转换为字符串。


我们可以使用”.join() 方法将所有元素合并为一个并作为字符串返回。


weekdays = ['sun','mon','tue','wed','thu','fri','sat']
listAsString = ' '.join(weekdays)
print(listAsString)
# 输出: sun mon tue wed thu fri sat

把一个列表变成一个元组。


调用 Python 的tuple() 函数将列表转换为元组。


此函数将列表作为其参数。


但是请记住,将列表变成元组后我们无法更改列表,因为它变得不可变。


weekdays = ['sun','mon','tue','wed','thu','fri','sat']
listAsTuple = tuple(weekdays)
print(listAsTuple)
# 输出: ('sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat')

把一个列表变成一个集合。


将列表转换为集合会带来两个副作用。


Set 不允许重复条目,以便转换将删除任何此类项目。

集合是有序集合,因此列表项的顺序也会改变。

但是,我们可以使用set() 函数将列表转换为 Set。

weekdays = ['sun','mon','tue','wed','thu','fri','sat','sun','tue']
listAsSet = set(weekdays)
print(listAsSet)
# 输出: set(['wed', 'sun', 'thu', 'tue', 'mon', 'fri', 'sat'])


将列表变成字典。


在字典中,每一项都代表一个键值对。因此,转换列表并不像转换其他数据类型那样简单。


但是,我们可以通过将列表分成一组对,然后调用zip() 函数将它们作为元组返回来实现转换。


将元组传递给dict() 函数最终会将它们变成字典。


weekdays = ['sun','mon','tue','wed','thu','fri']
listAsDict = dict(zip(weekdays[0::2], weekdays[1::2]))
print(listAsDict)
# 输出: {'sun': 'mon', 'thu': 'fri', 'tue': 'wed'}



Q-98:在没有明确提及的情况下,你如何计算列表中每个项目的出现次数? 与集合不同,列表可以包含具有相同值的项目。


在 Python 中,列表有一个count() 函数,它返回特定项目的出现次数。


计算单个项目的出现次数。


weekdays = ['sun','mon','tue','wed','thu','fri','sun','mon','mon']
print(weekdays.count('mon'))


# 输出: 3


计算列表中每个项目的出现次数。


我们将使用列表推导式和count() 方法。它将打印每个项目的频率。


weekdays = ['sun','mon','tue','wed','thu','fri','sun','mon','mon']

print([[x,weekdays.count(x)] for x in set(weekdays)])


# 输出: [['wed', 1], ['sun', 2], ['thu', 1], ['tue', 1], ['mon', 3], ['fri', 1]]



Q-99:什么是 NumPy,它比 Python 中的列表好在哪里?


NumPy 是一个用于科学计算的 Python 包,可以处理大数据量。它包括一个强大的 N 维数组对象和一组高级函数。


此外,NumPy 数组优于内置列表。


NumPy 数组比列表更紧凑。

使用 NumPy 读取和写入项目更快。

使用 NumPy 比使用标准列表更方便。

NumPy 数组更高效,因为它们增强了 Python 中列表的功能。

回到目录


Q-100:在 Python 中创建空的 NumPy 数组有哪些不同的方法?


我们可以应用两种方法来创建空的 NumPy 数组。


创建空数组的第一种方法。


import numpy

numpy.array([])


第二种方法创建一个空数组。


# 创建一个空数组

numpy.empty(shape=(0,0))

目录
相关文章
|
1月前
|
存储 数据可视化 算法
最新Python-Matplotlib可视化(9)——精通更多实用图形的绘制,2024年最新小米面试题库
最新Python-Matplotlib可视化(9)——精通更多实用图形的绘制,2024年最新小米面试题库
最新Python-Matplotlib可视化(9)——精通更多实用图形的绘制,2024年最新小米面试题库
|
1月前
|
数据采集 Java 数据挖掘
最新Python+OpenCV+dlib汽车驾驶员疲劳驾驶检测!,2024年最新网易云java面试
最新Python+OpenCV+dlib汽车驾驶员疲劳驾驶检测!,2024年最新网易云java面试
最新Python+OpenCV+dlib汽车驾驶员疲劳驾驶检测!,2024年最新网易云java面试
|
1月前
|
数据采集 算法 网络协议
最新Python 面试常见问题(1),2024年最新面试官必问的10个问题
最新Python 面试常见问题(1),2024年最新面试官必问的10个问题
最新Python 面试常见问题(1),2024年最新面试官必问的10个问题
|
1月前
|
数据采集 XML 程序员
最新用Python做垃圾分类_python垃圾分类代码用key和format,5年经验Python程序员面试27天
最新用Python做垃圾分类_python垃圾分类代码用key和format,5年经验Python程序员面试27天
最新用Python做垃圾分类_python垃圾分类代码用key和format,5年经验Python程序员面试27天
|
1月前
|
Python
最新用Python做一个变态版的《超级玛丽》游戏,面试必备知识点
最新用Python做一个变态版的《超级玛丽》游戏,面试必备知识点
最新用Python做一个变态版的《超级玛丽》游戏,面试必备知识点
|
1月前
|
数据采集 机器学习/深度学习 人工智能
最新用python代码画爱心,来自程序猿的浪漫~_python画爱心代码(1),2024年最新面试简历模板免费
最新用python代码画爱心,来自程序猿的浪漫~_python画爱心代码(1),2024年最新面试简历模板免费
最新用python代码画爱心,来自程序猿的浪漫~_python画爱心代码(1),2024年最新面试简历模板免费
|
1月前
|
存储 机器学习/深度学习 数据安全/隐私保护
最全Pillow(PIL)入门教程(非常详细)_python pillow 教程,2024年最新Python面试送分题
最全Pillow(PIL)入门教程(非常详细)_python pillow 教程,2024年最新Python面试送分题
最全Pillow(PIL)入门教程(非常详细)_python pillow 教程,2024年最新Python面试送分题
|
1月前
|
架构师 数据挖掘 Python
最全pandas库(Python),2024年最新阿里云架构师面试
最全pandas库(Python),2024年最新阿里云架构师面试
最全pandas库(Python),2024年最新阿里云架构师面试
|
1月前
|
网络协议 程序员 网络架构
最全OSPF路由协议基础(OSPF基本配置),2024年最新Python高级面试
最全OSPF路由协议基础(OSPF基本配置),2024年最新Python高级面试
最全OSPF路由协议基础(OSPF基本配置),2024年最新Python高级面试
|
1月前
|
SQL 分布式计算 前端开发
10个常见的python面试问题_python面试常见问题
10个常见的python面试问题_python面试常见问题