
Python
文章平均质量分 59
介绍 Python 的语法和标准库
jiang_huixin
这个作者很懒,什么都没留下…
展开
-
Python shapely 库
基本几何类型包括: 点(Point), 线(LineString), 线环(LinearRing), 多边形(Polygon)LinearRing 是一个封闭的 LineString, 起始点与终止点的坐标相同, 创建方法与 LineString 一致。在几何对象的创建中, 一个坐标元组 (x, y[, z]) 代表一个点, 多个点的组合嵌套可以创建更复杂的几何对象。在创建时, 既可以使用坐标元组作为参数, 也可以使用对应的基本几何对象作为参数。不同类型的基本几何对象也可以组成一个集合对象。原创 2023-06-28 15:00:00 · 3222 阅读 · 0 评论 -
Python 连接 PostgreSQL 数据库
Psycopg 是最受欢迎的用于连接 PostgreSQL 的 Python 驱动库, Psycopg 完全遵守 Python DB API 2.0 规范, 并且是线程安全的, 在底层直接调用 C 库 libpq。原创 2023-05-25 23:00:00 · 2534 阅读 · 0 评论 -
Python lxml 库与 XPath 语法
lxml 库是 C 库libxml2和libxslt的 Python 绑定, 可处理 XML 和 HTML 文档, 支持 XPath 语法。原创 2023-05-01 13:25:22 · 1225 阅读 · 0 评论 -
Python 多重集合 Counter
Python标准库中的collections.Counter 类实现了多重集合,该类型允许在集合中多次出现同一个元素多重集合Counter实质上是一个字典,键表示具体元素,值表示该元素出现的次数,即该元素在整个集合中的数量除了可以从可迭代对象获取初始元素外,还能以字典的方式创建Counter(键值对中的值为元素个数)操作 加减运算 作为多重集合,自然支持集合运算 其他方法c.elements()所有元素的可迭代对象(包含重复)c.most_common([n])计数最多的前n个元素及其计数原创 2023-04-02 22:50:01 · 508 阅读 · 0 评论 -
Python 类型提示(type hints)
Python 是一门动态语言,变量使用前不需要声明,并且可以指向任何类型的对象; 一方面给开发者带来了便利;另一方面,给 IDE 和代码阅读者带来了困惑,在变量类型未知的情况下,IDE 无法给出补全提示和语法检查Python 从 3.5 版本开始支持"类型提示"(PEP484),允许开发者声明变量的类型类型提示的最大好处是 IDE 可以提供相应类型的补全提示类型提示仅起到提示的功能,对代码的运行没有影响,变量的实际类型可以与类型提示不同类型提示包括:变量类型,函数中的参数类型和返回值类型原创 2023-04-02 18:42:45 · 710 阅读 · 0 评论 -
Python 双端队列 deque
Python 标准库 collections 提供了 deque 类型,两端均可以操作,相当于双端队列deque 的底层使用链式存储结构,不需要预留空间,在中间插入或删除元素时不需要移动元素,不具有快速随机访问元素的特点新建双端队列 不指定 maxlen 或 maxlen 为 None 时, 不限制 deque 的长度从队尾(右端)入队或出队 从队首(左端)入队或出队 deque 也属于序列类型, 有许多操作与列表类似 循环右移原创 2023-04-02 18:48:31 · 428 阅读 · 0 评论 -
Python 字典类型拓展(包括 MappingProxyType 只读字典, defaultdict 缺省字典和 ChainMap)
Python 除了 dict 字典类型, 还有相关的字典扩展类型, 包括MappingProxyType 只读字典, defaultdict 缺省字典和 ChainMapMappingProxyType 为普通字典提供只读视图. 除了无法修改, 只读字典与普通字典的功能一致当字典的键不存在时, defaultdict 使用工厂函数的返回值作为这个键对应的值ChainMap 将多个字典组成一个映射数据结构, 在使用上与字典一致1. 通过键访问值时, 优先返回第一个包含该键的字典的值2. 修改 ...原创 2022-07-26 17:47:59 · 984 阅读 · 0 评论 -
VSCode 配置使用 PyLint 语法检查器
1. 首先安装 "Python" 插件2. 安装 `pylint` 语法检查器推荐安装在当前的 Python 环境中3. 启用 `pylint` 语法检查器4. 配置 `pylint` 语法检查器创建 .pylintrc 文件, pylint --generate-rcfile > .pylintrc5. 禁用某些检查项- 代码处添加注释,# pylint: disable=missing-module-docstring- 修改 pylint 的运行参数- 修改 .pylintrc 文件原创 2022-06-12 22:26:07 · 12070 阅读 · 0 评论 -
Python namedtuple 命名元组
namedtuple 是具有名称的元组, 与普通元组一样, namedtuple 也是不可变的序列, 除了支持整数索引访问, namedtuple 还支持点属性的方式访问元素namedtuple 工厂函数创建新类型的同时会自动生成文档字符串以及 __repr__ 方法namedtuple 内置了一些以单下划线开头的属性和方法Python 3.6 还提供一种全新的语法来定义命名元组(typing.NamedTuple)原创 2022-04-20 00:27:18 · 421 阅读 · 0 评论 -
Python metaclass 元类
在 Python 中, 每一个对象均由某个类进行实例化而创建, 而对象的 __class__ 属性指向了这个类访问 obj.__class__ 等价于调用 type(obj) 函数对于 Python 语言, 一切皆对象, 类也是对象, 而类是由元类实例化而来Python 中默认的元类是 type我们可以继承 type 自定义一个元类, 然后使用该元类来创建类原创 2022-02-12 15:54:10 · 747 阅读 · 0 评论 -
ubuntu 编译 CPython 源码
CPython 是 Python 的一个官方实现, 其他实现有 PyPy, Cython 和 Jython获取 CPython 源码git clone --branch 3.9 https://github.com/python/cpythoncd cpython也可以手动下载压缩包源代码目录结构.├── Doc├── Grammar├── Include├── Lib # Python 编写的标准模块 ├── m4├── Mac├── Misc├原创 2021-08-28 17:01:16 · 412 阅读 · 0 评论 -
Python HTTP request 使用 retry 策略
受服务器和网络影响, 没法保证网络请求一次就能成功, 有时需要多尝试几次Python 的 urllib3 和 requests 均支持 retry, 但它们都不是标准库urllib3 使用 retry测试 URL 为 https://httpbin.org/status/500, 只要访问就返回 500from urllib3.util import Retryfrom urllib3 import PoolManagerurl_500 = 'https://httpbin.org/statu原创 2021-08-20 14:42:03 · 4205 阅读 · 0 评论 -
Python 使用 type 动态创建类
type 函数有两种形式的调用:class type(object)class type(name, bases, dict)第一种比较常见, 用于查看对象所属的类第二种可以动态创建类, 无需使用 class 语句下面对比两种创建类的方法静态创建class TestClass1: time = "2021-03-31" def test(self): print("Test1")动态创建name 直接绑定类的 __name__ 属性, bases 可原创 2021-03-31 20:14:10 · 2019 阅读 · 0 评论 -
Python importlib 动态导入模块
import 语句无法在运行时改变要导入的模块, importlib 可以通过传入模型名称达到动态导入 Python 模块的效果示例文件结构如下Dir_1/├── Dir_1_1│ ├── content.py 被导入文件│ ├── import_demo.py 运行入口│ └── __init__.py└── __init__.py1 directory, 4 files被导入文件 content.py 只有原创 2021-03-11 10:54:42 · 396 阅读 · 0 评论 -
Python contextlib 模块
Python 标准库 contextlib 提供了工具便于在 with 语句中使用忽略异常简单示例import contextlibwith contextlib.suppress(ZeroDivisionError): print("before x = 1 / 0") x = 1 / 0 print("after x = 1 / 0")print("exit x = 1 / 0")打印before x = 1 / 0exit x = 1 / 0其等原创 2021-01-18 16:59:11 · 1140 阅读 · 0 评论 -
Python functools.wraps 详解
标准库 functools 中的 wrap 函数用于包装函数, 不改变原有函数的功能, 仅改变原有函数的一些属性, 例如 __name__, __doc__, __annotations__ 等属性先看一个简单的示例import functoolsdef func_1(x: str) -> None: """ function :return: None """ print("func_1", x)@functools.wraps(func_1原创 2021-01-11 14:39:51 · 5206 阅读 · 0 评论 -
Python glob 模块
Python 的标准模块 `glob` 实现了 Linux 中的通配符查找功能, 返回结果是一个列表, 列表的内容为文件或目录名称, 每一次查找的结果是无序的查找方式有非递归和递归子目录两种最后更新于 2021/08/20原创 2020-12-22 17:59:51 · 301 阅读 · 0 评论 -
Python 多进程使用 tqdm
第三方库 tqdm 提供了进度条功能, 可以基于可迭代对象, 也可以手动控制安装$ pip3 install tqdm基于可迭代对象In [1]: import time, tqdmIn [2]: pbar = tqdm.tqdm("Python", unit="character") 0%| | 0/6 [00:00<?, ?character/s]In [3]: for c in pb原创 2020-12-09 22:40:22 · 3566 阅读 · 0 评论 -
Python 常用文件和目录操作(新建 重命名 移动 复制 删除)
新建目录os.mkdir(path, mode=0o777, *, dir_fd=None)仅新建单个目录, 不支持递归, 路径已存在时报错, 相当于 Linux 命令中的 mkdiros.makedirs(name, mode=0o777, exist_ok=False)可递归新建目录, 相当于 Linux 命令中的 mkdir -pmode: 新建目录的权限, 使用八进制形式exist_ok: 路径存在时不报错重命名os.rename(src, dst, *, src_d原创 2020-11-25 15:55:35 · 353 阅读 · 0 评论 -
Python @abstractmethod 抽象方法
Python 除了内置的 @classmethod 类方法与 @staticmethod 静态方法,与之类似的装饰器还有:标准模块 `abc` 提供的 @abstractmethod 抽象方法使用 @abstractmethod 抽象方法:1. 所在的 class 继承 `abc.ABC`2. 给需要抽象的实例方法添加装饰器 @abstractmethod完成这两步后,这个 class 就变成了抽象类,不能被直接实例化,要想使用抽象类,必须继承该类并实现该类的所有抽象方法原创 2020-11-21 15:56:25 · 33056 阅读 · 2 评论 -
Python 使用 __getstate__ 和 __setstate__ 魔法方法
2021-03-21 更新__getstate__ 与 __setstate__ 两个魔法方法分别用于Python 对象的序列化与反序列化在序列化时, _getstate__ 可以指定将那些信息记录下来, 而 __setstate__指明如何利用已记录的信息原创 2020-11-13 14:26:55 · 13406 阅读 · 0 评论 -
Python logging 模块基础教程
Python logging 模块基础基础简单使用logging 模块有与日志级别对应的函数,可以直接输出日志import logginglogging.warning("warn")输出:WARNING:root:warn没有任何配置之前, 默认使用 the root logger 发送日志, 这就是为什么输出中包含 root , 日志默认被发送至标准错误输出 stderr (终端显示红色字体)日志级别Level重要程度logging.DEBUG调试lo原创 2020-09-27 11:37:18 · 228 阅读 · 0 评论 -
setuptools 工具的简单使用
自定义 Python 库使用虚拟环境使用虚拟环境可以隔离其他环境, 当然也可以不使用任何环境$ mkvirtualenv Setup -p /usr/bin/python3.7(Setup)$ pip3 list输出Package Version---------- -------pip 20.1setuptools 46.1.3wheel 0....原创 2020-05-07 01:24:54 · 1581 阅读 · 0 评论