Python 源码解读系列文章

《读源码学 Python》是本站推出的一系列 优质的 Python 底层实现相关文章。 为方便大家阅读,特将已发布的文章链接整理如下: 从 Python 列表的特性来探究其底层实现机制 从 Python 源码来分析列表的 resize 机制 从源码剖析 Python 字典的底层实现 详细介绍 Python 字典使用的哈希表   【原创不易,欢迎转载,请注明出处,抄袭必究!】 欢迎关注本站

详情

RealPython 基础教程系列文章目录

《RealPython 基础教程》是本站推出的一系列 优质的 Python 基础文章。 为方便大家阅读,特将已发布的文章链接整理如下: Python 基本数据类型 一文理解 Python 中的变量 Python 运算符和表达式 Python 字符串详解 Python 中的列表和元组 Python 字典用法详解   【原创不易,欢迎转载,请注明出处,抄袭必究!】 欢迎关注本站公众号【pyt

详情

万字长文带你入门Scrapy – Scrapy简明教程

本文通过示例简要介绍一下使用Scrapy抓取网站内容的基本方法和流程。 继续阅读之前请确保已安装了scrapy。 基本安装方法为:pip install scrapy 我们已经在之前的文章中初步介绍了scrapy,本文是前文的进一步拓展。 本文主要包含如下几部分: 1,创建一个scrapy项目 2,编写一个爬虫(或蜘蛛spider,本文中含义相同)类用于爬取网站页面并提取数据 3,使用命令行导出爬

详情

python爬虫scrapy概要介绍

Scrapy是一个用于爬取web站点并提取结构化数据的应用框架,通常我们称之为爬虫,一款优秀的python爬虫。 scrapy爬取的数据可被用在数据挖掘、信息处理、历史数据归档等非常广泛数据分析和处理领域。 我们可以通过一个简单的例子来初步了解一下如何通过scrapy蜘蛛(spider)爬取web页面。 import scrapy class QuotesSpider(scrapy.Spider)

详情

使用纯 Python 代码来模拟实现 Python 字典

在前面几篇文章中,我们一起了解了 Python 字典的概念、用法和实现原理。今天,我们试着用 Python 代码来实现一个具有全功能的字典类,从而加强理解。 【基本思路】 首先,我们要确认字典应具备的基本功能: 存储 key 唯一的键值对 可通过 key 来访问键值对,且时间效率较高 可迭代 支持 keys()、value() 和 item() 等 dict 支持的基本方法 可获取元素个数,可以字

详情

详细介绍 Python 字典使用的哈希表

我们在上一篇文章中分析了 CPython 中是如何实现 dict 的。由于涉及内容较多,我可能并没有描述清楚 dict 所用的哈希表的具体结构。 如果你也对此有疑问,不妨来看一下本文对哈希表结构的进一步分析。 【dict 哈希表】 先看一张重新制作的图。 这张图描述的就是 CPython 中 PyDictKeysObject 结构中的成员变量 dk_indices。它的数据类型是 char[],表

详情

从源码剖析 Python 字典的底层实现

在《RealPython 基础教程:Python 字典用法详解》这篇文章中,我们介绍了 dict 的特性: dict 是存储键值对的关联容器 dict 中的 key 是唯一的 可使用 dict[key] 语法来快速访问 dict 中的元素 Python 3.6 之后的版本会保持元素添加到 dict 中的顺序 那么,Python 底层是如何支撑这些特性的呢?其运行效率如何? 我们今天就来简单探索一下

详情

RealPython 基础教程:Python 字典用法详解

在连续编写了5篇和 list 相关的文章之后,我们继续《RealPython 基础教程》这个系列。 今天,我们要学习的数据结构是字典(dict)。 dict 是一个包含若干对象的集合。它和 list 有以下共同的特征: 它们都是可变的 它们都是动态的,可根据需要自行伸缩大小。 它们都可以嵌套使用。一个 list 可包含另一个 list,一个 dict 也可以包含另一个 dict。dict 也可以包

详情

一文掌握 Python 迭代器的原理

理解迭代器是每个严肃的 Python 使用者学习 Python 道路上的里程碑。本文将从零开始,一步一步带你认识 Python 中基于类的迭代器。 相较于其他编程语言,Python 的语法是优美而清晰的。比如 for-in 循环这种极具 Python 特色的代码,让你读起来感觉就像读一个英语句子一样。它很能体现 Python 的美感。 numbers = [1, 2, 3] for n in nu

详情

从 Python 源码来分析列表的 resize 机制

Python 列表底层是通过存储对象指针的变长数组来实现的,使用数组带来的好处就是可以通过索引随机访问列表中的元素。 然而,由于 list 属于可变数据类型,我们可以动态地在 list 中增减元素,当底层数组不足以容纳新元素时,就要调整其大小了。这正是“变长”的含义所在。 那么,list 使用的变长数组是如何调整其大小呢?我们通过阅读 Python 源码来做下简单分析。 【列表初始内存分配机制】

详情

Python 列表的应用场景有哪些?你使用对了吗?

我们在前几篇文章中依次介绍了列表的特性和用法、列表推导式、列表的底层实现。今天来聊一聊列表在实际开发中的应用场景。   在开发中,选用何种数据结构是由我们面对的数据特征和业务场景决定的。 数据是单个的还是批量的,是小规模的还是海量的? 数据是独立的还是彼此关联的? 数据的生成是随机的还是有先后顺序的? 数据的用途是什么?会不会频繁读写?只读多还是修改多? 数据是否应用于多线程环境? &#

详情