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

版权申诉
0 下载量 118 浏览量 更新于2024-09-07 收藏 19KB DOCX 举报
"Python经典面试题.docx" 在Python编程中,单例模式是一种设计模式,它确保类只有一个实例,并提供一个全局访问点。在提供的内容中,提到了两种实现单例模式的方法: 1. 使用元类 Singleton 实现: ```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 的新实例时,都会检查 instance 是否已经存在,如果不存在才会创建新的实例。 2. 使用装饰器 @singleton 实现: ```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 # 使用时不再需要调用括号,而是直接使用类名 print(MyClass) print(MyClass) ``` 在这个版本中,我们定义了一个装饰器 singleton,它会存储每个类的实例,并在需要时返回。 接下来是关于lambda函数的讨论。lambda函数是Python中的匿名函数,可以在一行内定义简单函数。它们的语法如下: ```python lambda 参数列表: 表达式 ``` 例如: ```python g = lambda x, y: x * y ``` 这个lambda函数接受两个参数 x 和 y,并返回它们的乘积。lambda函数通常用于短小且简单的操作,但不宜过于复杂,因为它们的主体只能是一个表达式。 最后,Python提供了内置函数来进行类型转换。`int()`函数用于将字符串或其他类型转换为整数,如果字符串可以解析为整数,它将成功转换,否则会抛出异常: ```python >>> int("34") 34 >>> int(" ") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: ' ' ``` 当尝试将非数字字符串转换为整数时,会引发 `ValueError`。 这些面试题覆盖了Python中重要的设计模式、函数和类型转换概念,这些都是开发者需要熟练掌握的基本技能。理解并能灵活运用这些知识点对于Python开发人员来说至关重要。