88个python的基本语法知识【二】
摘要:
本文深入探讨了Python编程中的高级概念,从45至88号知识点,覆盖了类型注解、枚举、迭代器、上下下文管理器、装饰器、类和模块的导入、集合操作、文件操作、异常处理、元类、单例模式、工厂模式、依赖注入、抽象类、接口、动态属性和方法、命令行参数解析等。这些知识点为Python开发者提供了强大的工具和模式,以编写更加模块化、可重用和可维护的代码。
- 类型注解:
def my_function(param1: int, param2: str) -> str:return param2 * param1
- 枚举:
from enum import Enumclass Color(Enum):RED = 1GREEN = 2BLUE = 3
- 迭代器:
class MyIterator:def __init__(self, start, end):self.current = startself.end = enddef __iter__(self):return selfdef __next__(self):if self.current >= self.end:raise StopIterationelse:self.current += 1return self.current - 1
- 上下文管理器:
with open("file.txt", "r") as file:content = file.read()
- 装饰器:
def my_decorator(func):def wrapper(*args, **kwargs):print("Before function call")result = func(*args, **kwargs)print("After function call")return resultreturn wrapper
- 压缩文件:
import zipfilewith zipfile.ZipFile("file.zip", "r") as zip_ref:zip_ref.extractall("extracted")
- 数据库操作:
import sqlite3conn = sqlite3.connect("my_database.db")
cursor = conn.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)")
conn.commit()
conn.close()
- 网络请求:
import requestsresponse = requests.get("https://www.example.com")
- 多线程:
import threadingdef my_thread():print("Thread running")thread = threading.Thread(target=my_thread)
thread.start()
thread.join()
- 多进程:
import multiprocessingdef my_process():print("Process running")process = multiprocessing.Process(target=my_process)
process.start()
process.join()
- 进程池:
from multiprocessing import Pooldef my_function(x):return x*xwith Pool(5) as p:print(p.map(my_function, [1, 2, 3]))
- 队列:
from queue import Queueq = Queue()
q.put(1)
q.put(2)
q.get()
- 协程:
import asyncioasync def my_coroutine():await asyncio.sleep(1)print("Coroutine running")asyncio.run(my_coroutine())
- 异步IO:
import aiohttp
import asyncioasync def fetch(url):async with aiohttp.ClientSession() as session:async with session.get(url) as response:return await response.text()loop = asyncio.get_event_loop()
loop.run_until_complete(fetch("https://www.example.com"))
- 信号处理:
import signaldef handler(signum, frame):print("Signal handler called with signal", signum)signal.signal(signal.SIGINT, handler)
- 装饰器的实现:
def my_decorator(func):def wrapper(*args, **kwargs):print("Before function call")result = func(*args, **kwargs)print("After function call")return resultreturn wrapper
- 基于类的装饰器:
class MyDecorator:def __init__(self, func):self.func = funcdef __call__(self, *args, **kwargs):print("Before function call")result = self.func(*args, **kwargs)print("After function call")return result
- 模块和包的导入:
from my_package import my_module
- 相对导入:
from .my_module import my_function
- 集合操作:
set1 = {1, 2, 3}
set2 = {2, 3, 4}
set1 & set2 # 交集
set1 | set2 # 并集
set1 - set2 # 差集
- 集合方法:
my_set.add(5)
my_set.remove(5)
- 字典方法:
my_dict.keys()
my_dict.values()
my_dict.items()
- 对象方法:
class MyClass:def method(self):passobj = MyClass()
obj.method()
- 类方法:
class MyClass:@classmethoddef method(cls):pass
- 静态方法:
class MyClass:@staticmethoddef method():pass
- 上下文管理器的实现:
class MyContextManager:def __enter__(self):passdef __exit__(self, exc_type, exc_val, exc_tb):passwith MyContextManager():pass
- 元类:
class MyMeta(type):def __new__(cls, name, bases, dct):return super().__new__(cls, name, bases, dct)
- 装饰器链:
@decorator1
@decorator2
def my_function():pass
- 属性的getter和setter:
class MyClass:def __init__(self, value):self._value = value@propertydef value(self):return self._value@value.setterdef value(self, new_value):self._value = new_value
- 文件操作:
with open("file.txt", "r") as file:content = file.read()
- with语句:
with open("file.txt", "r") as file:content = file.read()
- yield语句:
def my_generator():yield 1yield 2yield 3
- 生成器表达式:
gen = (x**2 for x in range(10))
- 列表方法:
my_list.append(5)
my_list.remove(5)
- 元组解包:
a, b, c = (1, 2, 3)
- 字典解包:
def my_function(a, b, c):passmy_dict = {'a': 1, 'b': 2, 'c': 3}
my_function(**my_dict)
- 循环中断:
for i in range(10):if i == 5:break
- 循环跳过:
for i in range(10):if i == 5:continue
- 异步编程:
import asyncioasync def my_coroutine():await asyncio.sleep(1)asyncio.run(my_coroutine())
- 类型检查:
isinstance(5, int)
- 序列化和反序列化:
import pickle# 将数据序列化并保存到文件
data = {"name": "John", "age": 30}
with open("data.pkl", "wb") as file:pickle.dump(data, file)# 从文件中反序列化数据
with open("data.pkl", "rb") as file:data = pickle.load(file)
- 文件读取模式:
# 打开文件用于读取
with open("file.txt", "r") as file:content = file.read()
- 文件写入模式:
# 打开文件用于写入,会覆盖文件内容
with open("file.txt", "w") as file:file.write("Hello, World!")
- 上下文管理器:
# 使用上下文管理器自动管理资源
with open("file.txt", "r") as file:content = file.read()
这些知识点涵盖了Python中处理文件的基本操作,包括序列化和反序列化对象、以不同模式打开文件,以及使用上下文管理器确保资源的正确管理。掌握这些技能对于进行有效的文件输入输出操作至关重要。