Python面试必备:单例模式、lambda函数与类型转换解析
版权申诉
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程序员需要熟练掌握的基础知识。
2023-05-10 上传
680 浏览量
2021-11-09 上传
1440 浏览量
159 浏览量
156 浏览量
151 浏览量
2022-09-22 上传
点击了解资源详情
悠闲饭团
- 粉丝: 208
- 资源: 3419