Python高阶面试题

3.mysql事务的4个层次:

数据库事务的隔离级别有4个,由低到高依次为Read uncommitted(未授权读取、读未提交)、Read committed(授权读取、读提交)、Repeatable read(可重复读取)、Serializable(序列化)

 

4.迭代器和生成器:

生成器是迭代器的一种。
生成器:以yield结尾,用next()调用,每次调用一次,产生会一个值。
迭代器:需要自定义iter()方法,当调用到最后一个值之后再调用会抛出StopIteration 异常。
总结:有yield的函数就是生成器。

 

5.可变对象和不可变对象:

可变:list、dict、set
不可变:strings,unmber,tuple

6.装饰器的作用:

为已经存在的对象添加额外的功能
eg:写一个计算时间的装饰器
    import time
    def timer(func):
        def warper(*args,**kwargs):
            start = time.time()
            func(*args,**kwargs)
            end = time.time()
        return end-start
    return warper

    @timer
    def function(a):
        time.sleep(2)
        return [x for x in range(a)]

    print(function(10000))

7.mysql索引:常用的有两种,MyISAM 和 InnoDB。其区别及如何选择:

  • 区别:
    1. InnoDB 支持事务,MyISAM 不支持事务,回滚将造成不完全回滚,不具
### Python 最新面试题汇总 以下是 Python 面试题的汇总,涵盖基础知识、高级特性、多线程、并发编程等多个方面: 1. **闭包的作用及实现机制** 闭包是一个函数对象,它能够记住其定义时所在的词法环境。即使该环境已经销毁,闭包仍然可以访问其外部作用域中的变量[^3]。 示例代码: ```python def outer_function(x): def inner_function(y): return x + y return inner_function closure = outer_function(10) print(closure(5)) # 输出 15 ``` 2. **列表推导式与生成器表达式的区别** 列表推导式会立即生成整个列表并占用内存,而生成器表达式则逐个生成元素,节省内存。 示例代码: ```python # 列表推导式 list_comprehension = [i for i in range(10)] # 生成器表达式 generator_expression = (i for i in range(10)) print(list(generator_expression)) # 转换为列表后输出 [0, 1, 2, ..., 9] ``` 3. **可迭代对象与迭代器的区别** 可迭代对象是指实现了 `__iter__` 方法的对象,而迭代器是指实现了 `__next__` 方法的对象。通过调用 `iter()` 方法可以从可迭代对象中获取一个迭代器[^2]。 示例代码: ```python iterable = [1, 2, 3] iterator = iter(iterable) print(next(iterator)) # 输出 1 print(next(iterator)) # 输出 2 ``` 4. **GIL 的含义及其影响** GIL(Global Interpreter Lock)是 Python 解释器中的全局锁,确保同一时刻只有一个线程执行 Python 字节码。这虽然限制了多线程程序的性能,但在某些场景下可以简化开发[^3]。 5. **线程池的使用方法** 使用 `concurrent.futures.ThreadPoolExecutor` 可以方便地创建和管理线程池。以下是一个示例: ```python from concurrent.futures import ThreadPoolExecutor import time def task(n): print(f"Executing Task {n}") time.sleep(n) print(f"Task {n} Completed") with ThreadPoolExecutor(max_workers=3) as executor: tasks = [executor.submit(task, n) for n in range(1, 5)] print("All tasks complete.") ``` 6. **异常处理的最佳实践** 在编写健壮的代码时,应尽量捕获具体的异常类型,而不是捕获所有异常。此外,避免在异常处理块中执行过多逻辑。 示例代码: ```python try: result = 1 / 0 except ZeroDivisionError as e: print(f"Error: {e}") ``` 7. **装饰器的工作原理** 装饰器本质上是一个接受函数作为参数并返回另一个函数的高阶函数。它可以用于增强或修改函数的行为。 示例代码: ```python def my_decorator(func): def wrapper(*args, **kwargs): print("Before function call") result = func(*args, **kwargs) print("After function call") return result return wrapper @my_decorator def greet(name): print(f"Hello, {name}") greet("Alice") # 输出 Before function call, Hello, Alice, After function call ``` 8. **上下文管理器的实现** 上下文管理器可以通过 `with` 语句自动管理资源的分配和释放。通常通过实现 `__enter__` 和 `__exit__` 方法来定义。 示例代码: ```python class MyContextManager: def __enter__(self): print("Entering context") return self def __exit__(self, exc_type, exc_value, traceback): print("Exiting context") with MyContextManager() as manager: print("Inside context") ``` 9. **Python 中的元类** 元类是创建类的类,可以通过自定义元类实现动态类生成或行为修改。 示例代码: ```python class MyMeta(type): def __new__(cls, name, bases, dct): print("Creating class", name) return super().__new__(cls, name, bases, dct) class MyClass(metaclass=MyMeta): pass ``` 10. **异步编程的基础** 使用 `async` 和 `await` 关键字可以实现异步编程,提高 I/O 密集型任务的效率。 示例代码: ```python import asyncio async def main(): print("Hello") await asyncio.sleep(1) print("World") asyncio.run(main()) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值