Python知识总结
文章平均质量分 91
该专栏并不是一个系统学习的专栏,而是会把工作中遇到常用的python知识进行总结。
SunnyRivers
在通信、游戏、互联网、新能源等不同行业从事过多年大数据开发相关工作,想通过博客和大家一起分享大数据技术带来的经验和乐趣。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Asyncio 提速秘籍:用 run_in_executor 与 to_thread 巧解同步阻塞难题
I/O 密集型 → 用 ThreadPoolExecutor(默认)CPU 密集型 → 用 ProcessPoolExecutor(绕过 GIL)不要让同步代码阻塞事件循环!对于 I/O 阻塞:用 asyncio.to_thread()(Python 3.9+)或 loop.run_in_executor(None, …)。对于 CPU 阻塞:用 loop.run_in_executor(ProcessPoolExecutor(), …)。to_thread 是未来趋势,代码更干净;原创 2026-02-02 15:45:14 · 645 阅读 · 0 评论 -
一篇让 Python 新手秒懂异步编程的入门指南
asyncio = 单线程 + 事件循环 + 协作式任务切换它让你的程序在“等待”时去做别的事,把 I/O 空闲时间变成生产力!原创 2026-02-02 14:20:12 · 530 阅读 · 0 评论 -
HTTPX vs Requests vs AIOHTTP特征和性能对比指南
Requests 是最简单的选项,采用常规的、逐行执行的同步方式。HTTPX 同时支持同步和异步模式,比 Requests 更加灵活。AIOHTTP 完全异步,非常适合处理高速、高吞吐量及更复杂的任务。三者都能让 Python 程序与网站或 API 通信。在需要同时处理大量 URL 或发起多个 HTTP 请求时,异步方案(HTTPX 和 AIOHTTP)明显更快。Requests 最适合初学者;而 HTTPX 和 AIOHTTP 更适用于高级场景。原创 2026-02-02 10:58:14 · 646 阅读 · 0 评论 -
Python 的下一代 HTTP 客户端 HTTPX 特性详解
支持 HTTP Basic Auth 和 Digest Auth。HTTPX = requests 的易用性 + 异步 + HTTP/2 + 类型安全 + 现代架构。无论是写脚本、做测试、还是构建高性能服务,它都是目前 Python 最先进的 HTTP 客户端之一。原创 2026-02-02 09:51:40 · 719 阅读 · 0 评论 -
10分钟入门Python 异步编程
async/await 是 Python 实现并发(非并行)的核心机制,特别适合 I/O 密集型任务。异步函数必须通过 await 调用其他异步操作才能发挥价值。使用 asyncio.run() 是运行顶层异步函数的标准方式(自 Python 3.7 起)。对于网络请求,推荐使用 aiohttp;对于文件操作,可使用 aiofiles。异步 ≠ 多线程,它是在单线程内通过事件循环实现任务切换,资源开销更小。原创 2026-01-26 15:41:16 · 716 阅读 · 0 评论 -
一文搞懂 uv add 和 uv pip install的区别
uv 不仅仅是一个更快的 pip,它正在推动 Python 生态向更规范、更可重现的方向演进。如果你在做实验或维护旧项目,uv pip install 是平滑过渡的好帮手;如果你在开启新项目或追求工程化,请毫不犹豫地使用 uv add 和整个 Project API 体系。正如 uv 官方所说:(项目 API 代表了 uv 原生的工作方式。从今天开始,用 uv add 声明你的依赖,让每一次构建都可靠、可重复、跨平台无忧。原创 2026-01-21 16:43:43 · 1157 阅读 · 0 评论 -
从零开始用 Python 开发一个命令行工具
A:uvx 会报错,提示冲突。因此命令名最好具有唯一性或品牌标识(如 black、ruff、poetry)。步骤命令/操作初始化项目创建src/结构 +本地测试打包uv build发布uv publish(需 PyPI Token)用户使用uvx mycli通过这套流程,你不仅开发了一个 CLI 工具,还让它像 npm 全局命令一样简单易用,但速度更快、依赖更干净。原创 2026-01-21 16:00:44 · 824 阅读 · 0 评论 -
Python 包和项目管理工具uv核心亮点详解
我们从uv官网可以看到uv有下面亮点:🚀 一个工具替代 pip、pip-tools、pipx、poetry、pyenv、twine、virtualenv 等⚡️ 比 pip 快 10-100 倍🗂️ 提供全面的项目管理功能,包含通用锁文件❇️ 运行脚本,支持内联依赖元数据🐍 安装和管理 Python 版本🛠️ 运行和安装 以 Python 包形式发布的工具🔩 包含 pip 兼容接口,在熟悉 CLI 的同时获得性能提升🏢 支持 Cargo 风格的工作区用于可扩展项目。原创 2026-01-21 14:59:25 · 1118 阅读 · 0 评论 -
Python快速打包发布软件PyPi上(setup.py方式)
我们前面已经写过如何打包python项目并发布到pypi上,而且就是推荐的方式,这篇博客写的是用setup.py的方式(老方式)来进行快速打包发布到PyPi上。原创 2026-01-21 00:11:35 · 867 阅读 · 0 评论 -
3分钟理解Python 中的 __init__.py 文件
在Python项目中,你可能会经常遇到名为init.py 的文件。它们有时看起来似乎没什么作用,甚至可能是空的。那么,这个文件到底有什么用呢?在Python中,一个项目的每个文件夹都可以视为一个包(package),而每个 .py 文件则被视为一个模块(module)。如果你使用的是PyCharm这样的IDE,在新建Python包时,它会自动为你创建一个init.py 文件。这个文件可以看作是包的初始化脚本,具体用途请见下文。init希望这篇极简的博客能帮助你更好地理解init。原创 2026-01-19 09:53:34 · 263 阅读 · 0 评论 -
打包 Python 项目
本教程将带你一步步打包一个简单的 Python 项目。你将学习如何添加必要的文件和目录结构来创建一个可发布的包,如何构建这个包,并将其上传到 Python Package Index (PyPI)。原创 2026-01-18 22:23:37 · 809 阅读 · 0 评论 -
uv 与 pip:Python 包与依赖管理工具对比
学习 Python 或部署生产环境:优先使用 pip,确保兼容与稳定;启动新项目、优化 CI 流程、重视开发体验:大胆尝试 uv,它能显著提升效率。值得一提的是,uv 不只是一个包安装器。Python 版本管理(类似 pyenv)虚拟环境管理(替代 venv)项目脚手架(uv init)构建与发布(替代 build/twine)换句话说,uv 有望成为 Python 项目的“一体化”管理工具,大幅简化工具链。本文对比了 Python 包管理领域的两位代表:pip 与 uv。原创 2026-01-17 11:51:25 · 778 阅读 · 0 评论 -
uv、uvx 与 pip 的区别
pip 是 Python 的标准包管理工具,用于从安装和管理软件包。它功能全面,支持通过 requirements.txt 文件管理项目依赖,是 Python 生态中最基础、最常用的工具。安装一个包:从 PyPI 安装最新版的 requests 库。安装指定版本:安装 flask 的 2.2.2 版本。从 requirements.txt 安装依赖:这是项目中非常常见的依赖安装方式。升级包:将 numpy 升级到最新可用版本。原创 2025-11-27 13:13:05 · 903 阅读 · 0 评论 -
一看就会的python线程池
实习生:为什么每次让写多线程任务,我总是暗自恐慌,然后去网上搜索相关的代码?我:你就没有真正搞清楚应该怎么写,也并没有真正的手动写过,所以你心里没底就会慌乱。实习生:那你能不能告诉我一种让我很快掌握,甚至能一次性记住一种写处理多线程代码模板。我:你可以直接线程池。原创 2025-11-20 14:52:54 · 336 阅读 · 0 评论 -
深入理解 Python 中的 with 语句:优雅地管理资源
with 语句是 Python 中实现确定性资源管理的核心工具。它的设计哲学是:“申请即拥有,离开即释放”。通过上下文管理器协议,我们可以轻松实现资源的安全获取与释放。文件读写数据库连接与事务管理线程锁(threading.Lock)临时目录/文件(tempfile)网络套接字自定义资源(如 GPU 显存、硬件设备)🧠 记住一句话:“凡是需要成对操作的资源(打开/关闭、加锁/解锁、连接/断开),都应该考虑使用 with。原创 2025-11-05 09:36:38 · 723 阅读 · 0 评论 -
Fastapi服务在高并发情况下大量超时问题排查
实习生写的服务在压测的时候出现大量超时失败,他第一想法就是要扩大容器节点,我说软件能解决的问题,千万别堆硬件,否则老板迟早被你霍霍完蛋。在一个异步方法中调用了一个同步方法,这就导致一个容器服务一次只能支持一个并发。我们直接用代码进行演示。诊断问题:首先确认哪个同步方法是瓶颈。优先选择异步库:如果是 I/O 操作(网络、数据库),首选方案二是使用对应的异步库(如 httpx, asyncpg)。这是性能最好、最符合异步哲学的方式。原创 2025-11-04 13:41:18 · 853 阅读 · 0 评论 -
工厂+注册表解决大量if else问题
... 还有更多写一个新的节点类修改 create_node 方法,加一个 elif 分支❌ 代码越来越长,容易出错❌ 修改核心类,风险高❌ 新人看不懂,维护成本高❌ 违反了“开闭原则”:对扩展开放,对修改关闭我想要的效果是:新增节点,只写代码,不改 Graph 类!实习生:你的想法很好,但是我不知道怎么实现。你可以把“装饰器”想象成一个 “给函数加功能的工具”。原创 2025-10-27 10:25:52 · 694 阅读 · 0 评论 -
Python推导式
实习生非常苦恼:python搞的这个列表推导式有什么用啊,好好的写个for循环多直观明了,非得搞得这么隐晦,让人看不懂。我:看不懂是原因是因为没有把推导式真正理解和应用起来,下面我们整理一下它的使用。推导式类型语法符号特点适用场景列表推导式[…]一次性生成完整列表数据不多,需要反复使用字典推导式{k:v…}生成键值对构建映射关系(如配置、缓存)集合推导式{…}自动去重提取唯一值(如标签、ID)生成器推导式(…)懒加载、省内存、只遍历一次处理大数据、流式计算。原创 2025-10-20 13:37:31 · 713 阅读 · 0 评论 -
通俗易懂理解python yield
旁边的实习生非常苦恼的问:我每次遇到yield都会困惑,看一次相关博客就感觉好像懂了,但是时间一长又完全记不清了,它不像方法中的return很常用,知道就是用来结束方法,并返回值的。我:那说明你每次看完博客,认为自己理解了,其实依然处于一知半解,这里需要你有思维上的一个转变。我们接下来,就用通俗易懂的案例帮你一次性彻底理解。原创 2025-10-17 17:28:41 · 620 阅读 · 0 评论 -
Python Pydantic库使用指南
在现代 Python 开发中,数据验证(data validation)和数据解析(parsing) 是构建健壮且可靠应用的重要组成部分。无论我们是在开发 API、处理配置文件,还是从各种来源获取数据,确保数据被正确地验证和解析都是至关重要的。这正是 Pydantic 发挥作用的地方。Pydantic 是一个利用 Python 类型注解(type annotations)来实现数据验证和配置管理的库,它提供了强大且易于使用的工具,帮助我们确保数据格式正确。原创 2025-09-23 12:48:47 · 1062 阅读 · 0 评论 -
Python 中的 typing.Annotated:全面指南
Python 是一种动态类型语言,这意味着变量的类型是在运行时才确定的。虽然这种灵活性带来了便利,但在大型项目中,它也可能导致代码难以理解和维护。为了改善这一点,Python 3.5 引入了 typing 模块,为 Python 增加了静态类型检查的能力。typing 模块中的一个强大功能是 typing.Annotated。它允许你在类型注解上附加额外的元数据(metadata),从而使代码更具自解释性,并提升工具(如类型检查器、IDE)的支持能力。原创 2025-09-22 13:34:02 · 1220 阅读 · 0 评论 -
通俗易懂掌握Python进程、线程和协程
对于初学者很容易对进程、线程和协程的概念以及如何写出相关代码上面感到有些困惑,本篇博客我将用最通俗易懂的方式和案例,带你理解进程、线程和协程这三个核心概念。我们从一个生活化的比喻开始,然后分别深入,并提供可以直接套用的“模板代码”。进程:多任务,资源不共享,稳定线程:多任务,资源共享,需要锁协程:单线程内多任务,协作式,高效方式优点缺点适用场景多进程利用多核CPU,稳定性高(一个崩了不影响别人)资源开销最大,创建和切换慢计算密集型(压缩、加密、科学计算)原创 2025-08-25 09:52:42 · 815 阅读 · 0 评论 -
pip离线安装各种依赖包
我们在python开发中经常需要用pip安装各种各样的依赖包,但是很多生产场景,由于处于安全考虑,都不能直接访问外网,这个时候就得使用pip离线安装相关的依赖包了,本篇博客就来详细总结一下离线安装各种包的操作。原创 2025-01-23 09:43:58 · 1403 阅读 · 0 评论 -
Python调用Java代码
JPype 是一个允许 Python 与 Java 之间互操作的模块。它使得 Python 能够启动 Java 虚拟机(JVM),从而可以直接调用 Java 类库,甚至执行任意的 Java 代码。这对于需要结合 Python 的灵活性和 Java 强大类库的应用来说是非常有用的。本文将介绍如何安装 JPype,并演示一些使用 JPype 来调用 Java 代码的基本例子。原创 2025-01-03 09:46:32 · 603 阅读 · 0 评论 -
Python sys模块详解
这是我项目的层级:print_b()我:这个与windows系统没关系,你放在任何系统你不告诉a.py模块在哪里找package2包,它都找不到。实习生:啥意思啊?你就直接告诉我怎么解决这个bug吧。我:用sys模块的path方法就能解决。实习生:好,我搜一下,试试实习生:没什么用,依然报上面的错。import sysprint_b()我:你犯了两个错误,第一你代码第一行就这几导入package2,这个时候解释器还没有把这个路径传入到系统路径中,依然无法识别;原创 2023-07-20 11:12:00 · 789 阅读 · 0 评论 -
探索Python虚拟环境:优化代码开发与管理的利器
Python虚拟环境是一个强大而灵活的工具,它可以帮助我们管理项目的依赖包、隔离不同项目的开发环境,并优化代码的开发过程。本文将介绍Python虚拟环境的概念、用法和好处,并引导您逐步使用它来提高代码开发的效率。Python虚拟环境是Python解释器的一个独立副本,它可以在同一台计算机上同时存在多个独立的Python开发环境。每个虚拟环境都有自己独立的Python解释器和安装的第三方包,这样可以实现项目之间的隔离。原创 2023-07-05 15:49:58 · 1434 阅读 · 0 评论 -
cx_Oracle和oracledb的爱恨情仇
实习生:我要用python访问oracle,我究竟该用哪个库啊,网上搜的有两个,一个是cx_Oracle另一个是oracledb,这两个有什么区别?我:话说那是2022年5月一个阴云密布的日子,甲骨文发布了python oracledb驱动程序。与早期的cx_Oracle驱动程序(创建于1999年)一样,该模块允许Python应用程序连接到Oracle数据库,执行SQL和PL/SQL语句,并执行SODA操作。这两个驱动程序都实现了Python数据库API规范2.0版,有很多扩展,只有一些必要的遗漏。原创 2023-05-18 10:23:27 · 2335 阅读 · 0 评论 -
Pandas如何检测None和Nan
前言使用pandas的时候经常需要检测空值,但每次感觉都判断不全或者感觉很困惑,因此这里做个简单的总结NoneNone是Python的特殊类型,NoneType对象,它只有一个值None.它不支持任何运算也没有任何内建方法。None和任何其他的数据类型比较永远返回False。None有自己的数据类型NoneType。你可以将None复制给任何变量,但是你不能创建其他NoneType对象。数据类型>>>type(None)<class 'NoneType'>Nan原创 2021-11-10 21:47:31 · 11520 阅读 · 0 评论 -
PyCharm中直接使用Anaconda已安装的库
前言实习生问:我咋看见你经常用Anaconda的jupyter notebook写python代码,为啥不用PyCharm呢?…对于我个人而言现在主要的工作是数据分析,挖掘,直接下载Anaconda安装后,就可以启动jupyter notebook,写代码也感觉比较方便但是之前用Django以及爬虫项目的时候,PyCharm优势就非常明显了较为详细的解释Jupyter notebook的特点:开源。支撑 30 种语言,包括一些数据科学领域很流行的语言,如 Python、R、scala、Ju原创 2020-05-27 15:49:23 · 1975 阅读 · 0 评论 -
第三章Python快速入门
前言本章重点介绍有关Python的基础知识,这是每一个Python用户所要走过的必经之路,因为任何一段Python代码中都会包含一些基础知识。对于读者来说,只有基础夯实牢了,在之后的代码编程中才会轻松自如。如果你是从零开始的Python用户,希望能够认真学完本章的Python入门基础知识,相信本章内容对你将有很大的帮助;如果你是Python的中级或高级用户,通过本章内容的阅读,也许多少会有一点查...转载 2019-07-08 16:54:34 · 1786 阅读 · 1 评论 -
Python爬虫之(一):爬虫简介
什么是爬虫网络爬虫也叫网络蜘蛛,如果把互联网比喻成一个蜘蛛网,那么蜘蛛就是在网上爬来爬去的蜘蛛,爬虫程序通过请求url地址,根据响应的内容进行解析采集数据, 比如:如果响应内容是html,分析dom结构,进行dom解析、或者正则匹配,如果响应内容是xml/json数据,就可以转数据对象,然后对数据进行解析。作用通过有效的爬虫手段批量采集数据,可以降低人工成本,提高有效数据量,给予运营/销售的...原创 2018-12-29 20:03:56 · 370 阅读 · 0 评论 -
第七章线性回归预测模型
前言线性回归模型属于经典的统计学模型,该模型的应用场景是根据已知的变量(自变量)来预测某个连续的数值变量(因变量)。例如,餐厅根据每天的营业数据(包括菜谱价格、就餐人数、预定人数、特价菜折扣等)预测就餐规模或营业额;网站根据访问的历史数据(包括新用户的注册量、老用户的活跃度、网页内容的更新频率等)预测用户的支付转化率;医院根据患者的病历数据(如体检指标、药物服用情况、平时的饮食习惯等)预测某种疾......转载 2019-07-29 09:22:15 · 38844 阅读 · 16 评论 -
Python爬虫之(七)数据提取-正则表达式
提取数据在前面我们已经搞定了怎样获取页面的内容,不过还差一步,这么多杂乱的代码夹杂文字我们怎样把它提取出来整理呢?下面就开始介绍一个十分强大的工具,正则表达式!正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是用来匹配字符串非常强大的工具,在其他编程语言中同样...原创 2019-01-13 10:41:53 · 2089 阅读 · 0 评论 -
Python爬虫之(六)requests库的用法
介绍对了解一些爬虫的基本理念,掌握爬虫爬取的流程有所帮助。入门之后,我们就需要学习一些更加高级的内容和工具来方便我们的爬取。那么这一节来简单介绍一下 requests 库的基本用法安装pip install requests基本请求req = requests.get("http://www.baidu.com")req = requests.post("http://www.bai...原创 2019-01-11 21:51:44 · 448 阅读 · 0 评论 -
Python爬虫之(五)Cookie和URLError
Cookie为什么要使用Cookie呢?Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的。那么我们可以利用Urllib库保存我们登录的Cookie,然后再抓取其他页面就达到目的了煮个栗子:from urllib.request import Re...原创 2019-01-11 21:18:10 · 456 阅读 · 1 评论 -
Python爬虫之(四)urllib库的高级用法
伪装自己有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作设置请求头其中User-Agent代表用的哪个请求的浏览器from urllib.request import urlopenfrom urllib.request import Requesturl = 'http://www.server.com/login...原创 2018-12-30 16:17:20 · 335 阅读 · 0 评论 -
Python爬虫之(三)urllib库
第一个爬虫程序怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它是一段HTML代码,加 JS、CSS,如果把网页比作一个人,那么HTML便是他的骨架,JS便是他的肌肉,CSS便是它的衣服。所以最重要的部分是存在于HTML中的,下面我们就写个例子来扒一个网页下来from urllib.request imp...原创 2018-12-30 00:15:18 · 314 阅读 · 0 评论 -
Python爬虫之(二)工具的使用
常用的工具pythonpycharm浏览器chrome火狐fiddlerfiddler的使用操作界面界面含义请求 (Request) 部分详解名称含义Headers显示客户端发送到服务器的 HTTP 请求的,header 显示为一个分级视图,包含了 Web 客户端信息、Cookie、传输状态等Textview显示 POST 请求...原创 2018-12-29 21:11:17 · 279 阅读 · 0 评论 -
PyCharm中导入数据分析库
虽然安装完Anaconda后,就可以直接使用数据分析库进行代码编写以及数据分析,但是有时候我还是习惯用PyCharm开发(毕竟有很多年的Android Studio 和IDEA的使用经验),如何在PyCharm中导入常用的数据分析库呢?(1)打开PyCharm,选择左下角的Terminal,更新pippython -m pip install -U pip(2)安装各种库命令python...原创 2018-12-16 21:00:51 · 6623 阅读 · 3 评论 -
重要的Python数据分析库
NumPyNumPy(Numerical Python的简称)是Python科学计算的基础包。它提供了以下功能(不限于此):(1)快速有效的多维数组对象ndarray。(2)用于对数组执行元素级计算以及直接对数组执行数学运算的函数。(3)用于读写硬盘上基于数组的数据集的工具。(4)线性代数运算、傅里叶变换,以及随机数生成。(5)成熟的C API, 用于Python插件和原生C、C++、...原创 2018-12-16 20:37:18 · 702 阅读 · 0 评论
分享