你需要知道的Python 的 10 个高级概念

B站影视 2024-12-02 09:06 2

摘要:with open("File.txt", "w") as file: file.write("Hello, World!")# File is automatically closed after exiting the block.

上下文管理器用于管理资源,例如文件或数据库连接,确保在使用后进行适当清理。它们是使用 with 语句实现的。

with open("File.txt", "w") as file: file.write("Hello, World!")# File is automatically closed after exiting the block.

元类控制类的创建和行为。它们是类中的类,决定了类本身的行为方式。

class Meta(type): def __new__(cls, name, bases, dct): print(f"Creating class {name}") return super.__new__(cls, name, bases, dct)class MyClass(metaclass=Meta): pass

协程通过使用 async 和 await 关键字暂停和恢复执行来允许异步编程。

import asyncioasync def async_task: print("Task started") await asyncio.sleep(1) print("Task completed")asyncio.run(async_task)

ABC 为其他类定义蓝图,确保派生类实现特定方法。

from abc import ABC, abstractmethodclass Animal(ABC): @abstractmethod def sound(self): passclass Dog(Animal): def sound(self): return "Woof!"dog = Dogprint(dog.sound)

描述符管理属性的行为,并提供对获取、设置和删除属性值的精细控制。

class Descriptor: def __get__(self, instance, owner): return instance._value def __set__(self, instance, value): instance._value = value * 2class MyClass: attribute = Descriptorobj = MyClassobj.attribute = 10print(obj.attribute) # Output: 20

这些用于并行执行,从而启用并发任务。

import threadingdef task: print("Task executed")thread = threading.Thread(target=task)thread.startthread.join

Python 强调 “duck typing”,其中对象的类型不如它定义的方法和属性重要。

class Bird: def fly(self): print("Flying")class Airplane: def fly(self): print("Flying with engines")def test_fly(obj): obj.flytest_fly(Bird)test_fly(Airplane)

@dataclass 在 Python 3.7 中引入,是一个装饰器,可简化用于存储数据的类创建。

from dataclasses import dataclass@dataclassclass Point: x: int y: intp = Point(10, 20)print(p) # Output: Point(x=10, y=20)

Python 允许在推导式中使用嵌套和条件逻辑。

# Nested comprehensionmatrix = [[j for j in range(3)] for i in range(3)]print(matrix)# With conditionssquares = [x**2 for x in range(10) if x % 2 == 0]print(squares)class Myiterator: def __init__(self, max): self.max = max self.current = 0 def __iter__(self): return self def __next__(self): if self.current

来源:自由坦荡的湖泊AI一点号

相关推荐