当前位置: 首页 > news >正文

88个python的基本语法知识【二】

摘要:
本文深入探讨了Python编程中的高级概念,从45至88号知识点,覆盖了类型注解、枚举、迭代器、上下下文管理器、装饰器、类和模块的导入、集合操作、文件操作、异常处理、元类、单例模式、工厂模式、依赖注入、抽象类、接口、动态属性和方法、命令行参数解析等。这些知识点为Python开发者提供了强大的工具和模式,以编写更加模块化、可重用和可维护的代码。


  1. 类型注解:
def my_function(param1: int, param2: str) -> str:return param2 * param1
  1. 枚举:
from enum import Enumclass Color(Enum):RED = 1GREEN = 2BLUE = 3
  1. 迭代器:
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
  1. 上下文管理器:
with open("file.txt", "r") as file:content = file.read()
  1. 装饰器:
def my_decorator(func):def wrapper(*args, **kwargs):print("Before function call")result = func(*args, **kwargs)print("After function call")return resultreturn wrapper
  1. 压缩文件:
import zipfilewith zipfile.ZipFile("file.zip", "r") as zip_ref:zip_ref.extractall("extracted")
  1. 数据库操作:
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()
  1. 网络请求:
import requestsresponse = requests.get("https://www.example.com")
  1. 多线程:
import threadingdef my_thread():print("Thread running")thread = threading.Thread(target=my_thread)
thread.start()
thread.join()
  1. 多进程:
import multiprocessingdef my_process():print("Process running")process = multiprocessing.Process(target=my_process)
process.start()
process.join()
  1. 进程池:
from multiprocessing import Pooldef my_function(x):return x*xwith Pool(5) as p:print(p.map(my_function, [1, 2, 3]))
  1. 队列:
from queue import Queueq = Queue()
q.put(1)
q.put(2)
q.get()
  1. 协程:
import asyncioasync def my_coroutine():await asyncio.sleep(1)print("Coroutine running")asyncio.run(my_coroutine())
  1. 异步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"))
  1. 信号处理:
import signaldef handler(signum, frame):print("Signal handler called with signal", signum)signal.signal(signal.SIGINT, handler)
  1. 装饰器的实现:
def my_decorator(func):def wrapper(*args, **kwargs):print("Before function call")result = func(*args, **kwargs)print("After function call")return resultreturn wrapper
  1. 基于类的装饰器:
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
  1. 模块和包的导入:
from my_package import my_module
  1. 相对导入:
from .my_module import my_function
  1. 集合操作:
set1 = {1, 2, 3}
set2 = {2, 3, 4}
set1 & set2  # 交集
set1 | set2  # 并集
set1 - set2  # 差集
  1. 集合方法:
my_set.add(5)
my_set.remove(5)
  1. 字典方法:
my_dict.keys()
my_dict.values()
my_dict.items()
  1. 对象方法:
class MyClass:def method(self):passobj = MyClass()
obj.method()
  1. 类方法:
class MyClass:@classmethoddef method(cls):pass
  1. 静态方法:
class MyClass:@staticmethoddef method():pass
  1. 上下文管理器的实现:
class MyContextManager:def __enter__(self):passdef __exit__(self, exc_type, exc_val, exc_tb):passwith MyContextManager():pass
  1. 元类:
class MyMeta(type):def __new__(cls, name, bases, dct):return super().__new__(cls, name, bases, dct)
  1. 装饰器链:
@decorator1
@decorator2
def my_function():pass
  1. 属性的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
  1. 文件操作:
with open("file.txt", "r") as file:content = file.read()
  1. with语句:
with open("file.txt", "r") as file:content = file.read()
  1. yield语句:
def my_generator():yield 1yield 2yield 3
  1. 生成器表达式:
gen = (x**2 for x in range(10))
  1. 列表方法:
my_list.append(5)
my_list.remove(5)
  1. 元组解包:
a, b, c = (1, 2, 3)
  1. 字典解包:
def my_function(a, b, c):passmy_dict = {'a': 1, 'b': 2, 'c': 3}
my_function(**my_dict)
  1. 循环中断:
for i in range(10):if i == 5:break
  1. 循环跳过:
for i in range(10):if i == 5:continue
  1. 异步编程:
import asyncioasync def my_coroutine():await asyncio.sleep(1)asyncio.run(my_coroutine())
  1. 类型检查:
isinstance(5, int)
  1. 序列化和反序列化:
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)
  1. 文件读取模式:
# 打开文件用于读取
with open("file.txt", "r") as file:content = file.read()
  1. 文件写入模式:
# 打开文件用于写入,会覆盖文件内容
with open("file.txt", "w") as file:file.write("Hello, World!")
  1. 上下文管理器:
# 使用上下文管理器自动管理资源
with open("file.txt", "r") as file:content = file.read()

这些知识点涵盖了Python中处理文件的基本操作,包括序列化和反序列化对象、以不同模式打开文件,以及使用上下文管理器确保资源的正确管理。掌握这些技能对于进行有效的文件输入输出操作至关重要。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 找工作准备刷题Day10 回溯算法 (卡尔41期训练营 7.24)
  • 心跳机制详解
  • 【python】python基于 Q-learning 算法的迷宫游戏(源码+论文)【独一无二】
  • 个性化音频生成GPT-SoVits部署使用和API调用
  • Java正则表达式判断有无特殊字符
  • 数据结构—红黑树
  • 记一次折腾后台nodejs服务的经历
  • shopee虾皮 java后端 一面面经 整体感觉不难
  • Android TabLayout的简单用法
  • 【JavaEE】Bean的作用域和生命周期
  • AI/机器学习(计算机视觉/NLP)方向面试复习3
  • 如何通过一条SQL变更多个分库分表?
  • iptables 限制端口仅特定IP访问。
  • Apache DolphinScheduler 3.2.2 版本正式发布!
  • 一文解析:代理IP的五大优势
  • @jsonView过滤属性
  • 「面试题」如何实现一个圣杯布局?
  • Computed property XXX was assigned to but it has no setter
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • Java编程基础24——递归练习
  • Laravel 实践之路: 数据库迁移与数据填充
  • leetcode46 Permutation 排列组合
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • nodejs:开发并发布一个nodejs包
  • 从输入URL到页面加载发生了什么
  • 让你的分享飞起来——极光推出社会化分享组件
  • 如何在GitHub上创建个人博客
  • 微信小程序开发问题汇总
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • ![CDATA[ ]] 是什么东东
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • (pycharm)安装python库函数Matplotlib步骤
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (十一)c52学习之旅-动态数码管
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)jdk与jre的区别
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .gitignore文件忽略的内容不生效问题解决
  • .mysql secret在哪_MYSQL基本操作(上)
  • .net 7 上传文件踩坑
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .NET/C# 使窗口永不获得焦点
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .NET大文件上传知识整理
  • .NET的数据绑定
  • /*在DataTable中更新、删除数据*/
  • [ C++ ] STL---仿函数与priority_queue
  • [ Socket学习 ] 第一章:网络基础知识