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

举报
海拥 发表于 2022/04/17 21:56:26 2022/04/17
【摘要】 100 个基本的 Python 面试问题第四部分(61-80)Q-1:什么是 Python,使用它有什么好处,你对 PEP 8 有什么理解?Q-2:以下 Python 代码片段的输出是什么?证明你的答案。Q-3:如果程序不需要动作但在语法上需要它,可以在 Python 中使用的语句是什么?Q-4:在 Python 中使用“~”获取主目录的过程是什么?Q-5:Python 中可用的内置类型有哪...

100 个基本的 Python 面试问题第四部分(61-80)

Q-1:什么是 Python,使用它有什么好处,你对 PEP 8 有什么理解?
Q-2:以下 Python 代码片段的输出是什么?证明你的答案。
Q-3:如果程序不需要动作但在语法上需要它,可以在 Python 中使用的语句是什么?
Q-4:在 Python 中使用“~”获取主目录的过程是什么?
Q-5:Python 中可用的内置类型有哪些?
Q-6:如何在 Python 应用程序中查找错误或执行静态分析?
Q-7:什么时候使用 Python 装饰器?
Q-8:列表和元组的主要区别是什么?
Q-9:Python 如何处理内存管理?
Q-10:lambda 和 def 之间的主要区别是什么?
Q-11:使用 python reg 表达式模块“re”编写一个 reg 表达式来验证电子邮件 ID?
Q-12:你认为以下代码片段的输出是什么?代码中有错误吗?
Q-13:Python 中有 switch 或 case 语句吗?如果不是,那么相同的原因是什么?
Q-14:Python 用来迭代数字序列的内置函数是什么?
Q-15:Python 的 try-except 块中可能有哪些可选语句?
Q-16:Python 中的字符串是什么?
Q-17:Python 中的切片是什么?
Q-18:Python 中的 %s 是什么?
Q-19:字符串在 Python 中是不可变的还是可变的?
Q-20:Python 中的索引是什么?
Q-21:Python 中的文档字符串是什么?
Q-22:Python 编程中的函数是什么?
Q-23:Python 中有多少基本类型的函数?
Q-24:我们如何用 Python 编写函数?
Q-25:Python 中的函数调用或可调用对象是什么?
Q-26:Python 中的 return 关键字是做什么用的?
Q-27:Python 中的“按值调用”是什么?
Q-28:Python 中的“按引用调用”是什么?
Q-29:trunc() 函数的返回值是多少?
Q-30:Python 函数必须返回一个值吗?
Q-31:Python 中的 continue 有什么作用?
Q-32:Python 中 id() 函数的用途是什么?
Q-33:*args 在 Python 中有什么作用?
Q-34:**kwargs 在 Python 中做什么?
Q-35:Python 有 Main() 方法吗?
Q-36: __ Name __ 在 Python 中有什么作用?
Q-37:Python 中“end”的目的是什么?
Q-38:什么时候应该在 Python 中使用“break”?
Q-39:Python 中的 pass 和 continue 有什么区别?
Q-40:len() 函数在 Python 中有什么作用?
Q-41:chr() 函数在 Python 中有什么作用?
Q-42:ord() 函数在 Python 中有什么作用?
Q-43:Python 中的 Rstrip() 是什么?
Q-44:Python 中的空格是什么?
Q-45:Python 中的 isalpha() 是什么?
Q-46:你如何在 Python 中使用 split() 函数?
Q-47:Python 中的 join 方法有什么作用?
Q-48:Title() 方法在 Python 中有什么作用?
Q-49:是什么让 CPython 与 Python 不同?
Q-50:哪个包是最快的 Python 形式?
Q-51:Python 语言中的 GIL 是什么?
Q-52:Python 如何实现线程安全?
Q-53:Python 如何管理内存?
Q-54:Python 中的元组是什么?
Q-55:Python 编程中的字典是什么?
Q-56:Python 中的 set 对象是什么?
Q-57:字典在 Python 中有什么用?
Q-58:Python 列表是链表吗?
Q-59:Python 中的 Class 是什么?
Q-60:Python 类中的属性和方法是什么?
Q-61:如何在运行时为 Class 属性赋值?
Q-62:Python 编程中的继承是什么?
Q-63:Python 中的组合是什么?
Q-64:Python 程序中的错误和异常是什么?
Q-65:你如何在 Python 中使用 Try/Except/Finally 处理异常?
Q-66:你如何为 Python 中的预定义条件引发异常?
Q-67:什么是 Python 迭代器?
Q-68:Iterator 和 Iterable 有什么区别?
Q-69:什么是 Python 生成器?
Q-70:Python 中的闭包是什么?
Q-71:Python 中的装饰器是什么?
Q-72:你如何在 Python 中创建字典?
Q-73:你如何在 Python 中读取字典?
Q-74:如何在 Python 中遍历字典对象?
Q-75:你如何在 Python 中向字典添加元素?
Q-76:如何在 Python 中删除字典的元素?
Q-77:你如何检查字典中键的存在?
Q-78:Python 中列表推导式的语法是什么?
Q-79:Python 中字典理解的语法是什么?
Q-80:Python 中生成器表达式的语法是什么?
Q-81:你如何用 Python 编写条件表达式?
Q-82:你对 Python 枚举了解多少?
Q-83:Python 中 globals() 函数有什么用?
Q-84:为什么在 Python 中使用 zip() 方法?
Q-85:Python 编程中的类或静态变量是什么?
Q-86:三元运算符在 Python 中是如何工作的?
Q-87:“self”关键字有什么作用?
Q-88:在 Python 中复制对象有哪些不同的方法?
Q-89:Python 中文档字符串的用途是什么?
Q-90:您将使用哪个 Python 函数将数字转换为字符串?
Q-91:你如何用 Python 调试程序?是否可以单步执行 Python 代码?
Q-92:列出一些用于调试 Python 程序的 PDB 命令?
Q-93:调试 Python 程序的命令是什么?
Q-94:你如何在 Python 中监控程序的代码流?
Q-95:为什么以及何时在 Python 中使用生成器?
Q-96:yield 关键字在 Python 中有什么作用?
Q-97:如何将列表转换为其他数据类型?
Q-98:在没有明确提及的情况下,你如何计算列表中每个项目的出现次数?
Q-99:什么是 NumPy,它比 Python 中的列表好在哪里?
Q-100:在 Python 中创建空的 NumPy 数组有哪些不同的方法?
直接跳到末尾 去领资料


Q-81:你如何用 Python 编写条件表达式?

我们可以将以下单个语句用作条件表达式。
如果条件是其他语句,则为默认状态

>>> no_of_days = 366
>>> is_leap_year = "Yes" if no_of_days == 366 else "No"
>>> print(is_leap_year)
Yes

回到目录


Q-82:你对 Python 枚举了解多少?

在使用迭代器时,有时我们可能有一个用例来存储迭代次数。Python 通过提供一个称为 enumerate() 的内置方法让我们很容易地完成这项任务。

enumerate() 函数将计数器变量附加到可迭代对象,并将其作为“枚举”对象返回。

我们可以直接在“for”循环中使用这个对象,或者通过调用 list() 方法将它转换成一个元组列表。它具有以下签名:

enumerate(iterable, to_begin=0)
Arguments:
iterable: array type object which enables iteration
to_begin: the base index for the counter is to get started, its default value is 0
alist = ["apple","mango", "orange"] 
astr = "banana"
  
list_obj = enumerate(alist) 
str_obj = enumerate(astr) 
  
print("list_obj type:", type(list_obj))
print("str_obj type:", type(str_obj))

print(list(enumerate(alist)) )  
print(list(enumerate(astr, 2)))

输出是:

list_obj type: <class 'enumerate'>
str_obj type: <class 'enumerate'>
[(0, 'apple'), (1, 'mango'), (2, 'orange')]
[(2, 'b'), (3, 'a'), (4, 'n'), (5, 'a'), (6, 'n'), (7, 'a')]

回到目录


Q-83:Python 中 globals() 函数有什么用?

Python 中的 globals() 函数将当前全局符号表作为字典对象返回。

Python 维护一个符号表来保存有关程序的所有必要信息。此信息包括程序使用的变量、方法和类的名称。

此表中的所有信息都保留在程序的全局范围内,Python 允许我们使用 globals() 方法检索它。

Signature: globals()

Arguments: None
# 举例: globals() function 
x = 9
def fn(): 
    y = 3
    z = y + x
    # 调用 globals() 方法
    z = globals()['x'] = z
    return z
       
# 测试代码
ret = fn() 
print(ret)

输出是:

12

回到目录


Q-84:为什么在 Python 中使用 zip() 方法?

zip 方法允许我们映射多个容器的相应索引,以便我们可以将它们用作单个单元。

Signature: 
 zip(*iterators)
Arguments: 
 Python iterables or collections (e.g., list, string, etc.)
Returns: 
 A single iterator object with combined mapped values
# 举例: zip() 方法
  
emp = [ "tom", "john", "jerry", "jake" ] 
age = [ 32, 28, 33, 44 ] 
dept = [ 'HR', 'Accounts', 'R&D', 'IT' ] 
  
# 调用 zip() 来映射值
out = zip(emp, age, dept)
  
# 转换所有值以按设置打印它们
out = set(out) 
  
# 显示最终值
print ("The output of zip() is : ",end="") 
print (out)

输出是:

The output of zip() is : {('jerry', 33, 'R&D'), ('jake', 44, 'IT'), ('john', 28, 'Accounts'), ('tom', 32, 'HR')}

回到目录


Q-85:Python 编程中的类或静态变量是什么?

在 Python 中,所有对象共享公共类或静态变量。

但是对于不同的对象,实例或非静态变量是完全不同的。

C++和Java等编程语言需要使用static关键字将变量作为类变量。但是,Python 有一种独特的方式来声明静态变量。

在类声明中使用值初始化的所有名称都成为类变量。那些在类方法中获得赋值的成为实例变量。

# 举例 
class Test: 
    aclass = 'programming' # A class variable 
    def __init__(self, ainst): 
        self.ainst = ainst # An instance variable 
  
# CSStudent 类的对象
test1 = Test(1) 
test2 = Test(2) 
  
print(test1.aclass)
print(test2.aclass)
print(test1.ainst)
print(test2.ainst)

# 也可以使用类名访问类变量
print(Test.aclass)

输出是:

programming
programming
1
2
programming

回到目录


Q-86:三元运算符在 Python 中是如何工作的?

三元运算符是条件语句的替代。它将真值或假值与您需要测试的语句组合在一起。

语法类似于下面给出的语法。

[onTrue] if [条件] else [onFalse]

x, y = 35, 75
smaller = x if x < y else y
print(smaller)

回到目录


Q-87:“self”关键字有什么作用?

“self” 是一个Python关键字,其表示保持对象的实例的变量。

在几乎所有面向对象的语言中,它都作为隐藏参数传递给方法。

回到目录


Q-88:在 Python 中复制对象有哪些不同的方法?

Python中有两种复制对象的方法。

copy.copy() 函数

  • [ ] 它将文件从源复制到目标。
  • [ ] 它将返回参数的浅拷贝。
    copy.deepcopy() 函数
  • [ ] 它还生成从源到目标的对象副本。
  • [ ] 它将返回您可以传递给函数的参数的深层副本。

回到目录


Q-89:Python 中文档字符串的用途是什么?

在 Python 中,文档字符串就是我们所说的文档字符串。它设置了记录 Python 函数、模块和类的过程。

回到目录


Q-90:您将使用哪个 Python 函数将数字转换为字符串?

要将数字转换为字符串,可以使用内置函数str()。如果您需要八进制或十六进制表示,请使用内置函数oct() 或hex()。

💡也请检查。

回到目录


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))

回到目录


总结——100 个基本 Python 面试题

我已经写了很长一段时间的技术博客,这是我的一篇面试题分享。希望你们会喜欢!这里汇总了我的全部原创及作品源码: Github

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。