# 1. 单例模式
# 原理:确保一个类只有一个实例,提供全局访问点
# 适用场景:配置信息读取、日志记录器
print("# 1. 单例模式")
class Singleton:
_instance = None
def __new__(cls, *args, **kwargs):
if not cls._instance:
cls._instance = super().__new__(cls)
return cls._instance
class MyClass(Singleton):
pass
obj1 = MyClass()
obj2 = MyClass()
print(obj1 is obj2)
# 2. 装饰器模式
# 好比给房间添加装饰,但是不影响核心功能
print("# 2. 装饰器模式")
def color_decorator(func):
def wrapper(name):
print(f"Red {func(name)}")
return wrapper
@color_decorator
def say_hello(name):
print(f"Hello, {name}")
return f"Hello, {name}"
say_hello("Python")
# 3. 观察者模式
# 当数据变化时,所有依赖它的对象都会得到通知。
print("# 3. 观察者模式")
class Subject:
def __init__(self):
self.observers = []
self.data = None
def attach(self, observe):
self.observers.append(observe)
def detach(self, observe):
self.observers.remove(observe)
def notify(self):
for observer in self.observers:
observer.update(self.data)
def set_data(self, data):
self.data = data
class Observe():
def update(self, data):
print(f"New data: {data}")
subject = Subject()
observer1 = Observe()
subject.attach(observer1)
subject.set_data("Hello World!")
subject.notify()
"""
# 4. 字典排序
按照key来进行排序:
按照value进行排序:
"""
print("# 4. 字典排序")
my_dict = {'banana': 3, 'apple': 4, 'pear': 1, 'orange': 2}
# 根据键排序
sorted_dict_by_key = dict(sorted(my_dict.items(), reverse=False)) #
print(f"sorted_dict_by_key: {sorted_dict_by_key}")
sorted_dict_by_value = dict(sorted(my_dict.items(), key=lambda item: item[1]))
print(f"sorted_dict_by_value: {sorted_dict_by_value}")
"""
# 5. 数组与元组的区别:
语法,数组时[],元组是();
可变性,列表是可变的,创建后可以添加、删除修改元素,元素创建后无法进行修改;
用途,数组用来存储用户输入、数据集合等,而元组由于不可变性,可以作为字典的key,可以用来做函数的返回值;
性能,元组性能更高,数组适合需要频繁修改数据的情况;
"""
"""
# 6. lambda表达式
lambda 参数列表 : 表达式
"""
add = lambda x, y: x + y
result = add(3, 4)
print(result)
"""
# 7.
is比较两个对象的内存地址是否一致,比较id(a) ==的区别 ;
交换元素 a, b = b, 2
__init__:是实例方法,用来初始化变量的值;__new__:类方法,创建对象时调用
range:最后的元素取不到;
"""
Python面试常用基础知识
于 2024-07-14 21:38:17 首次发布