Q-57:字典在 Python 中有什么用?
字典有一组对象(键)映射到另一组对象(值)。Python 字典表示唯一键到值的映射。
它们是可变的,因此不会改变。与键关联的值可以是任何 Python 类型。
Q-58:Python 列表是链表吗?
Python 列表是一个变长数组,它不同于 C 风格的链表。
在内部,它有一个用于引用其他对象的连续数组,并在列表头结构中存储指向数组变量及其长度的指针。
这里有一些关于类和对象的 Python 面试问题。
回到目录
Q-59:Python 中的 Class 是什么?
Python 支持面向对象编程,并提供了几乎所有的 OOP 特性以供程序使用。
Python 类是创建对象的蓝图。它定义成员变量并获取与它们相关联的行为。
我们可以通过使用关键字“class”来实现。对象是从构造函数创建的。这个对象代表类的实例。
在 Python 中,我们通过以下方式生成类和实例。
>>>class Human: ... pass >>>man = Human() >>>print(man) <__main__.Human object at 0x0000000003559E10>
回到目录
Q-60:Python 类中的属性和方法是什么?
如果一个类没有定义任何功能,它就毫无用处。我们可以通过添加属性来实现。它们用作数据和函数的容器。我们可以在类体内直接添加一个属性。
>>> class Human: ... profession = "programmer" >>> man = Human() >>> print(man.profession) programmer
添加属性后,我们可以继续定义函数。通常,我们称它们为方法。在方法签名中,我们总是必须为第一个参数提供一个 self 关键字。
>>> class Human: profession = "programmer" def set_profession(self, new_profession): self.profession = new_profession >>> man = Human() >>> man.set_profession("Manager") >>> print(man.profession) Manager
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 机制,它允许对象访问其父类功能。它将基类功能传递给孩子。
我们故意抽象出不同类中的相似代码。
公共代码在基类中,子类对象可以通过继承访问它。看看下面的例子。
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 中的组合是什么?
为了演示组合,我们需要实例化类中的其他对象,然后使用这些实例。
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())
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 有什么区别?
列表、元组、字典和集合等集合类型都是可迭代对象,而它们也是可迭代容器,在遍历时返回迭代器。