Python面试常用基础知识

# 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:最后的元素取不到;


"""
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值