Python面试必备:单例模式、lambda函数与类型转换解析

版权申诉
0 下载量 71 浏览量 更新于2024-08-07 收藏 34KB DOC 举报
"本文档包含了Python编程语言的经典面试题,主要涵盖了单例模式的实现、lambda函数的概念以及Python中的类型转换。" 在Python中,单例模式是一种设计模式,用于确保无论多少次创建类的实例,都只会有一个唯一的实例存在。文档中提到了两种实现单例模式的方法: 1. 使用元类(metaclass)实现单例: ```python class Singleton(type): def __init__(cls, name, bases, dict): super(Singleton, cls).__init__(name, bases, dict) cls.instance = None def __call__(cls, *args, kw): if cls.instance is None: cls.instance = super(Singleton, cls).__call__(*args, kw) return cls.instance class MyClass(object): __metaclass__ = Singleton print(MyClass()) # 创建第一个实例 print(MyClass()) # 再次创建实例,实际上是同一个对象 ``` 在这个例子中,`Singleton` 类是一个元类,它控制了 `MyClass` 的实例化过程,确保每次调用 `MyClass()` 都返回相同的实例。 2. 使用装饰器(decorator)实现单例: ```python def singleton(cls): instances = {} def get_instance(): if cls not in instances: instances[cls] = cls() return instances[cls] return get_instance @singleton class MyClass: pass # 创建实例,实际是同一个对象 my_instance1 = MyClass() my_instance2 = MyClass() ``` 这里的装饰器 `singleton` 会记住已经创建过的实例,并在下次请求时返回相同实例。 接下来是关于lambda函数的讨论。在Python中,lambda函数是一种简洁的定义小型匿名函数的方式,它通常用于需要简单函数的场合,例如作为参数传递给高阶函数。lambda函数的语法如下: ```python lambda arguments: expression ``` 例如,定义一个计算两个数乘积的lambda函数: ```python mul = lambda x, y: x * y result = mul(3, 4) # result will be 12 ``` lambda函数的表达式部分只能包含一个简单的表达式,不能包含复杂的语句。如果函数体需要多行代码或者更复杂的逻辑,建议使用常规的def定义函数。 最后,Python提供了一些内置函数来进行类型转换。`int()` 函数就是其中之一,它能够将表示数学数值的字符串转换为整数。例如: ```python str_num = "123" int_num = int(str_num) # int_num will be 123 ``` 但需要注意的是,如果字符串无法转换为整数(如包含非数字字符),`int()` 函数会抛出 `ValueError`。 这个文档提供的面试题涉及了Python中的核心概念,包括面向对象设计、函数式编程以及动态类型特性,这些都是Python程序员需要熟练掌握的基础知识。