news 2026/7/30 4:27:33

Python编程核心范式:从语法基础到实战项目的100个必背源码精解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python编程核心范式:从语法基础到实战项目的100个必背源码精解

1. 项目缘起:为什么我们需要一份“必背”的源代码清单?

作为一名写了十几年代码的老程序员,我见过太多初学者,也包括一些工作了几年的朋友,在面对Python时的一个共同困惑:语法都学完了,书也看了不少,但一上手写点东西,或者遇到一个具体问题,脑子里还是一片空白。他们不缺知识,缺的是将知识“凝固”成肌肉记忆的经典范式。这就好比学武术,你背熟了所有拳谱口诀,但如果不把几个最基础的招式拆解、练习成千上万遍,真正对敌时根本用不出来。

“Python必背100源代码”这个想法,就是针对这个痛点。它不是一个简单的代码合集,而是一份经过筛选的“编程套路”精华。这里的“背”,不是死记硬背,而是理解、模仿、内化,直到你能不假思索地写出类似结构的代码,或者一眼就能看出别人代码里用了哪种“套路”。这份清单里的每一个例子,都应该像围棋中的“定式”一样,解决一类特定场景下的常见问题。

从网络上的热搜词也能看出大家的关注点:python安装教程python环境变量的配置vscode配置python环境……这说明大量用户正处在入门和搭建环境的阶段。而python爬虫python数据分析与可视化python锁屏代码等,则代表了大家学Python最想解决的实际问题。这份“100例”就应该覆盖这些高频需求,从环境搭建后的第一个.py文件,到能够解决实际问题的脚本,形成一个平滑的进阶路径。它要回答的不仅是“How”(怎么做),更是“Why”(为什么这么做),以及“What if”(如果换种情况该怎么办)。

2. 清单构建逻辑:如何筛选出真正值得“必背”的100个例子?

构建这样一份清单,绝不能是随便找100段代码堆砌在一起。它需要有清晰的内在逻辑和层次。根据我多年的开发和教学经验,我认为应该按照“核心语法 -> 数据结构妙用 -> 关键内置模块 -> 面向对象精髓 -> 常用第三方库 -> 综合实战小项目”的路线来组织。

2.1 第一层:语法基石与思维转换(20例)

这一层的目标是打破对语法的恐惧,建立“用代码描述逻辑”的直觉。例子必须极简,但直指核心。

  1. 变量交换的三种方式a, b = b, a这个简单的元组解包,是Pythonic思维的第一课。对比传统临时变量法,理解Python“序列解包”的优雅。
  2. 列表推导式与条件过滤[x*2 for x in range(10) if x%2==0]。一行代码替代多行循环,这是提升代码简洁度的核心技能。要讲清楚它的执行顺序(for...if...),并对比map+filter的写法。
  3. 字典的get方法与默认值:处理键不存在时,dict.get(key, default_value)远比if key in dict:更优雅和安全。这是一个防御性编程的习惯。
  4. 字符串格式化(f-string, format, %)的选用场景:f-string(Python 3.6+)是当前主流,但要知道format()在需要动态格式或兼容旧版本时的价值,以及%格式化在日志等场景的遗留用法。
  5. with语句管理资源with open('file.txt', 'r') as f: content = f.read()。理解上下文管理协议(__enter__,__exit__),知道它如何确保文件、锁、网络连接等资源被正确关闭,即使发生异常。
  6. lambda表达式与高阶函数sorted(list, key=lambda x: x['age'])。理解匿名函数的局限(单表达式)和适用场景(作为简洁的key函数或传递给map/filter)。
  7. enumeratezip的循环技巧for i, item in enumerate(items):获取索引;for name, age in zip(names, ages):并行迭代多个序列。告别手动管理索引i=0; i+=1的原始时代。
  8. any()all()的短路求值:判断可迭代对象中是否存在/全部为真。理解它们的短路特性(遇到第一个False/True即停止),这在处理生成器时能提升效率。
  9. *args**kwargs的可变参数:定义和调用函数时处理不确定数量参数的标准方式。要理解*用于解包序列,**用于解包字典。
  10. is==的区别is比较对象标识(内存地址),==比较值。小整数(-5~256)和字符串驻留是理解这个区别的经典案例。
  11. __name__ == '__main__'的作用:让一个Python文件既可以作为模块被导入,又可以作为脚本独立运行。这是编写可复用代码模块的基础。
  12. 列表的深浅拷贝list2 = list1[:](浅拷贝) vsimport copy; list2 = copy.deepcopy(list1)。通过包含子列表的复杂结构来演示区别,这是无数Bug的源头。
  13. 使用collections.defaultdict简化计数from collections import defaultdict; d = defaultdict(int); for word in words: d[word] += 1。无需判断键是否存在,自动初始化默认值。
  14. 使用collections.Counter进行快速计数from collections import Counter; word_counts = Counter(words)。一行代码完成词频统计,并支持most_common(n)等便捷操作。
  15. 使用itertools.cycleitertools.islicecycle无限循环一个序列,islice对迭代器进行切片。处理循环模式和大型数据流时非常有用。
  16. 使用functools.lru_cache实现记忆化@lru_cache(maxsize=None)装饰递归函数,避免重复计算,极大提升性能(如斐波那契数列)。
  17. else子句在循环和异常处理中的妙用for...else(循环完未break则执行else),try...except...else(无异常时执行else)。这是Python中不太常用但很精妙的语法。
  18. pass,break,continue的精确控制:理解三者对程序流程的不同影响,pass是占位符,break跳出整个循环,continue跳过本次迭代。
  19. globalnonlocal关键字:在函数内部修改全局变量或闭包的外层变量。知道它们的作用域,并谨慎使用,通常有更好的设计可以避免。
  20. __slots__属性优化内存:在定义类时使用__slots__来固定实例的属性,可以显著减少内存占用,适用于创建大量实例的场景。

2.2 第二层:数据结构与算法模式(25例)

这一层聚焦于用Python的方式高效处理数据,实现常见算法模式。

  1. 实现一个栈(Stack):用列表的append()pop()即可。强调后进先出(LIFO)特性,并可以扩展为具有大小限制的栈。
  2. 实现一个队列(Queue):使用collections.dequeappend()入队,popleft()出队。解释为什么不用列表(list.pop(0)是O(n)操作)。
  3. 使用堆(Heapq)实现优先级队列import heapq; heapq.heappush(heap, item); heapq.heappop(heap)。用于任务调度、求Top K等问题。
  4. 链表的基本操作(节点与链表类):理解指针(引用)的概念。实现节点的插入、删除、反转。虽然Python中列表已很强,但链表是理解数据结构的基础。
  5. 二叉树的前序、中序、后序遍历(递归与迭代):递归写法简洁,迭代写法(使用栈)有助于理解调用过程。这是理解树结构的基础。
  6. 深度优先搜索(DFS)与广度优先搜索(BFS):用递归或栈实现DFS,用队列实现BFS。应用于路径查找、状态空间搜索等。
  7. 二分查找:在有序列表中快速查找元素。模板代码必须背熟:while left <= right: mid = (left + right) // 2 ...。注意边界条件。
  8. 快速排序的实现:理解分治思想。选择基准值,分区,递归。虽然实践中用list.sort(),但理解其原理至关重要。
  9. 归并排序的实现:另一个分治法的经典案例,稳定排序,常用于外部排序。理解“分”与“合”的过程。
  10. 冒泡、选择、插入排序:虽然效率低,但作为理解排序算法入门,代码简单,有助于建立算法思维。
  11. 字典序排序sorted(list_of_strings)默认就是字典序。理解对于复杂对象,如何通过key参数自定义排序规则。
  12. 使用哈希表(字典)实现两数之和:给定数组和目标值,找出和为目标值的两个数。O(n)解法是利用字典记录遍历过的数字及其索引。
  13. 滑动窗口算法:用于解决子串/子数组问题。维护一个窗口,用双指针left,right移动,在O(n)时间内求解。
  14. 双指针技巧:除了滑动窗口,还有左右指针(如反转数组)、快慢指针(如判断链表是否有环)。
  15. 前缀和(Prefix Sum):预处理一个前缀和数组,可以在O(1)时间内计算任意区间和。用于频繁查询区间和的场景。
  16. 差分数组:是前缀和的逆运算,用于频繁对数组的某个区间进行增减操作,最后再通过前缀和得到结果数组。
  17. 回溯算法框架:解决排列、组合、子集、N皇后等问题。模板包括路径选择、递归、撤销选择(回溯)。
  18. 动态规划(DP)入门:斐波那契与爬楼梯:从递归到记忆化搜索(lru_cache),再到自底向上的DP数组,理解状态定义和转移方程。
  19. 动态规划:0-1背包问题:理解dp[i][w]的含义,以及状态转移方程。这是理解许多DP问题的基础模型。
  20. 并查集(Disjoint Set Union):用于处理不相交集合的合并与查询问题。实现find(路径压缩)和union(按秩合并)操作。
  21. 图的邻接表表示与遍历:用字典{node: [neighbors]}表示图,然后进行DFS/BFS遍历。
  22. Dijkstra算法求单源最短路径:使用优先队列(堆)实现。理解贪心思想,以及为什么不能处理负权边。
  23. LRU缓存机制的实现:结合哈希表(快速查找)和双向链表(维护顺序)实现O(1)getput。这是系统设计常见题。
  24. 实现一个Trie(前缀树):用于高效存储和检索字符串集合。每个节点包含一个子节点字典和一个是否是单词结尾的标志。
  25. 布隆过滤器(Bloom Filter)的原理与简单模拟:理解其空间效率和误判率。用多个哈希函数和位数组模拟,用于快速判断“某元素一定不存在或可能存在”。

2.3 第三层:核心内置模块实战(20例)

Python“开箱即用”的能力很大程度上来自于其强大的标准库。

  1. ospathlib模块进行文件路径操作os.path.join,os.listdir,os.walk。但更推荐使用面向对象的pathlibPath('dir') / 'file.txt',path.exists(),path.glob('*.py')
  2. sys模块:命令行参数与退出sys.argv获取命令行参数,sys.exit(code)退出程序。这是编写命令行脚本的基础。
  3. json模块序列化与反序列化json.dumps(obj)转字符串,json.dump(obj, file)写文件;json.loads(s)json.load(file)。注意ensure_ascii参数处理中文。
  4. datetimetime处理日期时间datetime.datetime.now(),strftime格式化,strptime解析,timedelta计算时间差。理解时区pytz库(第三方)。
  5. random模块生成随机数据random.randint(a, b),random.choice(seq),random.sample(population, k)。注意用random.seed()固定随机种子以复现结果。
  6. re正则表达式进行文本匹配与提取re.search,re.match,re.findall,re.sub。掌握常用模式如\d(数字),\w(单词字符),.*?(非贪婪匹配),分组()
  7. argparse模块解析命令行参数:定义位置参数、可选参数、类型、帮助信息。这是编写专业命令行工具的标准方式。
  8. logging模块记录日志:配置日志级别(DEBUG, INFO, WARNING, ERROR)、格式、输出位置(文件/控制台)。避免用print调试,用日志。
  9. subprocess运行外部命令subprocess.run(args, capture_output=True, text=True)。获取命令输出、返回码,比os.system更强大安全。
  10. threadingconcurrent.futures实现简单并发:理解GIL限制。使用ThreadPoolExecutor进行I/O密集型任务的并发。注意线程间通信(queue.Queue)。
  11. multiprocessing实现多进程:用于CPU密集型任务,绕过GIL。使用Process类或Pool
  12. asyncio异步IO入门:使用async/await语法。编写一个简单的异步HTTP请求示例。理解事件循环和协程。
  13. itertools模块的无限迭代器与组合生成器count,cycle,repeatpermutations,combinations,product。高效生成各种序列。
  14. functools模块:偏函数与装饰器工具partial固定函数部分参数;wraps在定义装饰器时保留原函数元信息。
  15. collections模块的更多工具namedtuple创建具名元组;OrderedDict(Python 3.7后dict已有序);ChainMap链接多个字典。
  16. typing模块的类型注解def func(name: str) -> int:。虽然运行时不影响,但用mypy进行静态检查能提前发现许多错误,提高代码可读性和可维护性。
  17. csv模块读写CSV文件csv.reader,csv.DictReadercsv.writer,csv.DictWriter。处理带标题行的数据非常方便。
  18. pickle模块序列化Python对象:可以序列化几乎任何Python对象到字节流。但注意安全风险(不要反序列化不受信任的数据)和版本兼容性问题。
  19. sqlite3操作嵌入式数据库:连接数据库,创建游标,执行SQL(CREATE,INSERT,SELECT),提交事务。理解?占位符防止SQL注入。
  20. hashlib模块进行哈希计算md5,sha1,sha256等。用于计算文件校验和、存储密码哈希(需加盐)。

2.4 第四层:面向对象编程(OOP)精髓(15例)

Python的OOP灵活而强大,理解其机制是写出优雅代码的关键。

  1. 类的定义与__init__方法:理解self参数,实例属性与类属性的区别。
  2. 属性访问控制与@property装饰器:使用___约定实现“私有”。用@property将方法变成属性访问,用@x.setter定义设置逻辑。
  3. 类的继承与方法重写(Override)class Child(Parent):。理解如何调用父类方法:super().__init__()
  4. 多重继承与MRO(方法解析顺序)class C(A, B):。理解Python的C3线性化算法,以及如何使用__mro__属性查看顺序。
  5. 类方法与静态方法@classmethod第一个参数是cls,用于操作类属性或作为替代构造函数;@staticmethod与类和实例都无关,只是一个放在类里的普通函数。
  6. __str____repr__魔法方法__str__用于用户友好的字符串表示(print(obj)),__repr__用于开发者调试和repr(obj),理想情况下eval(repr(obj)) == obj
  7. __len__,__getitem__,__iter__实现自定义容器:让你的类像列表或字典一样工作。理解迭代器协议(__iter__返回迭代器,迭代器需实现__next__)。
  8. __call__方法使实例可调用:实现后,实例可以像函数一样被调用:obj()。常用于创建有状态的函数或实现装饰器类。
  9. 上下文管理器类(__enter__,__exit__:除了用with语句,还可以自己实现上下文管理器类,在__exit__中处理异常和清理资源。
  10. 抽象基类(abc.ABC)from abc import ABC, abstractmethod。定义抽象方法,强制子类实现特定接口。用于设计模式中的模板方法。
  11. 数据类(dataclasses.dataclass):Python 3.7+。用@dataclass装饰器自动生成__init__,__repr__,__eq__等方法,用于主要存储数据的类。
  12. 枚举类(enum.Enum):定义一组命名的常量,提高代码可读性和安全性。from enum import Enum; class Color(Enum): RED = 1
  13. 描述符(Descriptor):实现__get__,__set__,__delete__方法的类。@property的本质就是描述符。用于精细控制属性访问。
  14. 元类(metaclass)的简单理解:元类是类的类。type是默认元类。通过定义元类,可以在类创建时拦截和修改类的定义。这是高级主题,但要知道它的存在和基本概念。
  15. 混入类(Mixin)的设计模式:一种通过多重继承来组合功能的方式。Mixin类通常不单独实例化,只提供特定方法。

2.5 第五层:常用第三方库入门(10例)

掌握这些库,能让你用Python解决绝大多数日常任务。

  1. 使用requests进行HTTP请求GET,POST请求,处理参数、头部、JSON响应、超时和异常。这是网络爬虫和调用API的基础。
  2. 使用BeautifulSouplxml解析HTML/XMLBeautifulSoup(html, 'lxml'),然后使用find,find_all,select(CSS选择器)定位元素。
  3. 使用pandas进行数据分析(读取、筛选、分组、聚合)pd.read_csv,df.head(),df[df['age'] > 30],df.groupby('city')['salary'].mean()。理解SeriesDataFrame
  4. 使用matplotlibseaborn绘制基本图表:折线图、柱状图、散点图、直方图。plt.plot(x, y),plt.xlabel(),plt.title(),plt.show()
  5. 使用numpy进行数组运算:创建数组np.array([1,2,3]),数组形状操作reshape,广播机制,通用函数np.sin,np.mean。这是科学计算的基础。
  6. 使用openpyxlpandas读写Excel文件pandasread_excelto_excel最简单。openpyxl提供更精细的控制。
  7. 使用Pillow(PIL)处理图像:打开图像Image.open(),调整大小resize,裁剪crop,保存save。进行简单的图像处理。
  8. 使用Flask创建最小Web应用from flask import Flask; app = Flask(__name__); @app.route('/')。理解路由、视图函数、请求上下文。
  9. 使用pytest编写单元测试def test_something(): assert func(3) == 5。使用pytest命令运行测试,理解夹具@pytest.fixture
  10. 使用SQLAlchemy进行ORM操作数据库:定义模型类,创建引擎和会话,进行增删改查。理解ORM将表映射为类,行映射为实例的思想。

2.6 第六层:综合实战与小项目(10例)

将前面的知识组合起来,解决一个具体的小问题。

  1. 命令行待办事项(Todo List)管理器:使用argparse解析命令(add, list, complete, delete),用jsonsqlite3存储数据。综合文件操作、数据序列化、CLI设计。
  2. 简易网络爬虫:抓取天气信息并保存:使用requests获取网页,BeautifulSoup解析,提取温度、天气状况,存入CSV文件或数据库。
  3. 批量文件重命名工具:使用ospathlib遍历目录,结合re正则表达式匹配和替换文件名。
  4. 图片批量缩放与格式转换脚本:使用Pillow,遍历文件夹下所有图片,统一调整为指定尺寸,并可能转换格式(如JPG转PNG)。
  5. 简易邮件发送程序:使用smtplibemail模块,构建带附件和HTML内容的邮件并发送。
  6. 单词词频统计器:读取一个文本文件,使用collections.Counter或手动用字典统计单词出现频率,排除停用词,输出前N个高频词。
  7. 基于Flask的简易API服务:提供一个RESTful API,比如一个简单的用户管理(CRUD),使用内存字典或sqlite3存储数据。
  8. 使用pandas进行数据清洗与分析示例:读取一个脏数据CSV(有缺失值、重复行、异常值),进行清洗,然后进行简单的统计分析并可视化。
  9. 多线程/多进程下载器:将一个大型文件分块,使用多个线程或进程同时下载不同块,最后合并。理解I/O密集型与CPU密集型任务的选择。
  10. 实现一个简单的装饰器用于函数执行时间计时@timer装饰器,在函数执行前后记录时间并打印。深入理解装饰器的语法糖和闭包概念。

3. 学习方法论:如何高效“背诵”与内化这些代码?

有了清单,更重要的是怎么用。死记硬背代码是没用的,必须通过“刻意练习”将其内化。

第一步:理解优先于记忆。面对每一个例子,先问三个问题:这段代码解决了什么问题?它的核心逻辑是什么(可以用流程图或伪代码描述)?为什么用这种方法而不是其他?(比如,为什么用字典计数而不用列表?)只有理解了“为什么”,代码才是活的。

第二步:动手敲,不要复制粘贴。在IDE里亲手把代码敲一遍,运行它,看到结果。过程中你可能会打错变量名、缩进出错,这些调试过程本身就是学习。尝试修改参数,看看输出如何变化,破坏它,再修复它。

第三步:进行变式练习。这是最关键的一步。不要满足于看懂例子。例如,学完“列表推导式过滤偶数”,立刻自己写一个“过滤出长度大于3的字符串”或“将一个二维列表扁平化”。学完“两数之和”,尝试解决“三数之和”。通过变式,你将模式从具体问题中抽象出来。

第四步:归纳与联想。定期回顾,将相似的例子归类。比如,把所有用到“字典”优化查找速度的例子放在一起(两数之和、LRU缓存、Trie树的部分实现),理解其核心思想是“用空间换时间”。把所有“递归”的例子放在一起,体会递归的终止条件和递归体。

第五步:融入实际项目或创造场景。找一个小项目,哪怕只是自动整理下载文件夹的脚本,尝试运用清单里的多个“套路”。在真实需求驱动下,你对这些代码的理解和记忆会深刻得多。

一个常见的误区是追求一次背完100个。更好的方法是制定计划,比如每周深入理解并练习5-10个,结合变式练习,两个月左右就能扎实掌握。慢就是快。

4. 环境、工具与资源:为高效学习扫清障碍

工欲善其事,必先利其器。从热搜词vscode python环境配置pycharm配置python环境可以看出,环境问题是第一道坎。

4.1 Python环境安装与管理

强烈建议使用MinicondaAnaconda来管理Python环境和包。它可以创建相互隔离的环境,避免项目间的包版本冲突。安装后,使用以下命令是日常操作:

# 创建一个名为my_project,Python版本为3.9的环境 conda create -n my_project python=3.9 # 激活环境(Windows和Mac/Linux命令不同) conda activate my_project # Windows source activate my_project # Mac/Linux # 在环境中安装包 conda install numpy pandas # 或者使用pip(conda环境内也可以用pip) pip install requests beautifulsoup4 # 退出环境 conda deactivate

关于激活anaconda里的python环境warning:+this+p这个热搜词,这通常是因为在PowerShell或某些终端中激活环境时脚本执行策略的警告,一般不影响使用,可以忽略或按提示更改执行策略。

4.2 代码编辑器与IDE选择

  • VS Code:轻量、插件生态丰富。安装Python扩展后,智能提示、调试、代码格式化(Black、autopep8)、Linting(pylint, flake8)功能都很完善。适合大多数场景。
  • PyCharm:专业的Python IDE,功能强大,开箱即用,对Django、Flask等Web框架支持更好。社区版免费,专业版收费。适合大型项目或深度开发。
  • Jupyter Notebook/Lab:交互式编程环境,特别适合数据分析、机器学习领域的探索和演示。代码可以分块(Cell)运行,即时看到结果和图表。

选择哪一个取决于你的主要工作流。初学者可以从VS Code开始,数据分析师可能更依赖Jupyter。

4.3 版本控制:Git

无论项目大小,从一开始就使用Git。git init初始化仓库,git addgit commit提交代码。学习基本的版本控制概念(工作区、暂存区、仓库)和操作。使用GitHub或Gitee托管代码,这是程序员的基本素养,也对应了热搜词源代码管理

4.4 学习资源与社区

  • 官方文档:遇到任何内置模块或主流第三方库(如requests, pandas),第一反应是查其官方文档,这通常是最准确、最及时的。
  • Stack Overflow:遇到具体报错信息,直接复制到Stack Overflow搜索,大概率已经有人问过并有了解决方案。
  • GitHub:阅读优秀开源项目的源代码(参考n8n 源代码ems能量管理系统源代码等热搜,但请遵守开源协议),这是学习高级用法和最佳实践的绝佳途径。

最后,记住编程是一门实践的手艺。这份“必背100源代码”清单是你的“招式库”,但真正的功夫,是在不断的编码、调试、思考和重构中练就的。现在,就从第一个例子开始,打开你的编辑器,动手吧。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/30 4:25:01

2026年静音舱各品牌深度拆解及前景应用

本人长期从事静音舱结构设计与空间声学专项设计工作&#xff0c;2026年为国内静音舱行业技术迭代、格局重构、业态升级的关键周期。本年度&#xff0c;我始终立足岗位职能&#xff0c;恪守“科研赋能设计、研发贴合市场、落地验证技术”的工作准则&#xff0c;常态化跟踪国内外…

作者头像 李华
网站建设 2026/7/30 4:24:19

Kimi K3开源AI模型许可证政策解析与本地部署指南

今天我们来深入分析一下Kimi K3的许可证政策&#xff0c;特别是其中关于年收入超过2000万美元需要商业授权的条款。这个政策对于计划使用Kimi K3的企业和个人开发者来说至关重要&#xff0c;直接关系到使用成本和合规风险。Kimi K3作为近期备受关注的开源项目&#xff0c;其许可…

作者头像 李华
网站建设 2026/7/30 4:22:00

STM32 ADC多通道采集与DMA应用:从单点到多维信号采集实战

1. 项目概述&#xff1a;从单点到多维的信号采集之旅在嵌入式开发&#xff0c;尤其是基于STM32这类MCU的项目里&#xff0c;ADC&#xff08;模数转换器&#xff09;绝对是一个绕不开的核心外设。无论是监测电池电压、读取传感器数据&#xff08;如温度、光照、压力&#xff09;…

作者头像 李华
网站建设 2026/7/30 4:20:35

FPGA矩阵乘法器设计:从Verilog实现到架构优化

1. 项目概述&#xff1a;为什么要在FPGA上实现矩阵乘法&#xff1f;如果你接触过数字信号处理、图像处理或者机器学习加速&#xff0c;那“矩阵乘法”这个词对你来说肯定不陌生。它是这些领域的核心运算&#xff0c;计算量巨大。在通用处理器&#xff08;CPU&#xff09;上跑大…

作者头像 李华
网站建设 2026/7/30 4:19:05

Python-openpyxl高级操作

获取单元格属性 单元格基本信息 除了 value(值),单元格还有以下常用属性: 属性 说明 示例 cell.row 行号(从1开始) 2 cell.column 列号(从1开始) 2 cell.coordinate 坐标 B2 cell.value 单元格值 李白 代码示例: from openpyxl import load_workbookfilePath = rD:\王…

作者头像 李华
网站建设 2026/7/30 4:16:30

基于51单片机的双通道波形发生器设计:从DAC原理到Proteus仿真

1. 项目缘起与核心价值最近在整理大学时期的项目资料&#xff0c;翻到了这个基于51单片机的波形发生器课设。当时为了这个项目&#xff0c;在图书馆和实验室泡了整整两周&#xff0c;从原理图绘制、代码调试到Proteus仿真&#xff0c;踩了不少坑&#xff0c;也收获了很多。现在…

作者头像 李华