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-61:如何在运行时为 Class 属性赋值?

我们可以在运行时指定属性的值。我们需要添加一个 init 方法并将输入传递给对象构造函数。请参阅以下示例来说明这一点。

>>> class Human:
def __init__(self, profession):
self.profession = profession
def set_profession(self, new_profession):
self.profession = new_profession

>>> man = Human("Manager")
>>> print(man.profession)
Manager

​回到目录​



Q-62:Python 编程中的继承是什么?

继承是一种 OOP 机制,它允许对象访问其父类功能。它将基类功能传递给孩子。

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

我们故意抽象出不同类中的相似代码。

公共代码在基类中,子类对象可以通过继承访问它。看看下面的例子。

class PC: # 基类
processor = "Xeon" # 通用属性
def set_processor(self, new_processor):
processor = new_processor

class Desktop(PC): # 派生类
os = "Mac OS High Sierra" # 个性化属性
ram = "32 GB"

class Laptop(PC): # 派生类
os = "Windows 10 Pro 64" # 个性化属性
ram = "16 GB"

desk = Desktop()
print(desk.processor, desk.os, desk.ram)

lap = Laptop()
print(lap.processor, lap.os, lap.ram)

输出:

Xeon Mac OS High Sierra 32 GB
Xeon Windows 10 Pro 64 16 GB

​回到目录​



Q-63:Python 中的组合是什么?

组合也是 Python 中的一种继承。它打算从基类继承,但有点不同,即通过使用基类的实例变量作为派生类的成员。

见下图。

100 个基本 Python 面试问题第四部分(61-80)_字符串_02

为了演示组合,我们需要实例化类中的其他对象,然后使用这些实例。

class PC: # 基类
processor = "Xeon" # 通用属性
def __init__(self, processor, ram):
self.processor = processor
self.ram = ram

def set_processor(self, new_processor):
processor = new_processor

def get_PC(self):
return "%s cpu & %s ram" % (self.processor, self.ram)

class Tablet():
make = "Intel"
def __init__(self, processor, ram, make):
self.PC = PC(processor, ram) 作品
self.make = make

def get_Tablet(self):
return "Tablet with %s CPU & %s ram by %s" % (self.PC.processor, self.PC.ram, self.make)

if __name__ == "__main__":
tab = Tablet("i7", "16 GB", "Intel")
print(tab.get_Tablet())

输出是:

Tablet with i7 CPU & 16 GB ram by Intel

​回到目录​



Q-64:Python 程序中的错误和异常是什么?

错误是程序中可能导致其异常退出的编码问题。

相反,异常的发生是由于外部事件的发生中断了程序的正常流程。

​回到目录​



Q-65:你如何在 Python 中使用 Try/Except/Finally 处理异常?

Python 制定了 Try、Except、Finally 结构来处理错误和异常。我们将缩进的不安全代码括在 try 块下。我们可以将回退代码保留在 except 块中。任何打算最后执行的指令都应该在 finally 块下。

try:
print("在 try 块中执行代码")
print(exception)
except:
print("进入except块")
finally:
print("到达最后一个区块")

输出是:

 try 块中执行代码
进入except块
到达最后一个区块

​回到目录​



Q-66:你如何为 Python 中的预定义条件引发异常?

我们可以根据某些条件引发异常。

例如,如果我们希望用户只输入奇数,否则会引发异常。

# 示例 - 引发异常
while True:
try:
value = int(input("输入一个奇数-"))
if value%2 == 0:
raise ValueError("由于无效输入退出!!!")
else:
print("输入的值为: %s" % value)
except ValueError as ex:
print(ex)
break

输出是:

输入一个奇数- 2
由于无效输入退出!!!

输入一个奇数- 1
输入的值为: 1
输入一个奇数-

​回到目录​



Q-67:什么是 Python 迭代器?

Python 中的迭代器是类似数组的对象,允许在下一个元素上移动。我们在遍历循环时使用它们,例如在“for”循环中。

Python 库没有。的迭代器。例如,一个列表也是一个迭代器,我们可以在它上面启动一个 for 循环。

​回到目录​



Q-68:Iterator 和 Iterable 有什么区别?

列表、元组、字典和集合等集合类型都是可迭代对象,而它们也是可迭代容器,在遍历时返回迭代器。

​回到目录​



以下是一些高级 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': '', 'traffic': 10000, "type": "organic"}
>>> type(site_stats)
<class 'dict'>
>>> print(site_stats)
{'type': 'organic', 'site': '', 'traffic': 10000}

​回到目录​



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

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

>>> site_stats = {'site': '', 'traffic': 10000, "type": "organic"}
>>> print(site_stats["traffic"])

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

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

​回到目录​



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

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

>>> site_stats = {'site': '', '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'] = ''
>>> site_stats['traffic'] = 10000000000
>>> site_stats['type'] = 'Referral'
>>> print(site_stats)
{'type': 'Referral', 'site': '', 'traffic': 10000000000}

我们甚至可以在 update() 方法的帮助下连接两个字典以获得更大的字典。

>>> site_stats['site'] = ''
>>> print(site_stats)
{'site': ''}
>>> site_stats_new = {'traffic': 1000000, "type": "social media"}
>>> site_stats.update(site_stats_new)
>>> print(site_stats)
{'type': 'social media', 'site': '', 'traffic': 1000000}

​回到目录​



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

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

>>> site_stats = {'site': '', 'traffic': 10000, "type": "organic"}
>>> del site_stats["type"]
>>> print(site_stats)
{'site': '', 'traffic': 1000000}

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

>>> site_stats = {'site': '', 'traffic': 10000, "type": "organic"}
>>> print(site_stats.pop("type", None))
organic
>>> print(site_stats)
{'site': '', 'traffic': 10000}

​回到目录​



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

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

>>> site_stats = {'site': '', '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 ]

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

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

​回到目录​



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

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

{ aKey, itsValue for aKey in iterable }

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

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

​回到目录​



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

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

( expression(var) for var in iterable )

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

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

>>> (var for var in range(10, 20))
at 0x0000000003668728>
>>> list((var for var in range(10, 20)))

​回到目录​



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

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