Python 备忘录
Publié le 19 November 2023
在 Windows 上安装 Python
运行 python
参考 :
cd mon_projet
python -m venv mon_venv
source mon_venv/bin/activate
# Sur windows
mon_venv\Scripts\activate
deactivate
安装需求
pip install -r requirements.txt
入门
Python 中的 GoF 设计模式
GoF 的设计模式是一组在《Design Patterns: Elements of Reusable Object-Oriented Software》一书中描述的23种设计模式。
名称 |
�描述 |
工厂方法 |
创建对象而无需指定要实例化的确切类。 |
�抽象工厂 |
创建相关或依赖对象的系列,而无需指定其具体类。 |
建造者 |
将复杂对象的构造与其表示分离,以便相同的构造过程可以创建不同的表示。 |
原型 |
通过复制现有的原型来创建新对象。 |
单例 |
将类的实例化限制为仅一个对象。 |
�适配器 |
将一个类的接口转换为客户端所期望的另一个接口。 |
桥 |
将抽象与其实现解耦,使两者能够独立变化。 |
组合 |
将对象组合成树形结构以表示部分-整体层次结构。 |
装饰器 |
动态地向对象添加额外职责。 |
立面 |
为子系统中的一组接口提供统一的接口。 |
享元 |
降低创建和使用轻量级对象的成本。 |
代理 |
为另一个对象提供替代或占位符,以控制对该对象的访问。 |
责任链 |
�允许多个对象处理请求。 |
命令 |
将请求封装在一个对象中,从而可以使用不同的请求、队列或日志来配置客户端,并支持可撤销的操作。 |
解释器 |
给出一种语言的语法表示,并使用该表示来解释该语言中的句子。 |
迭代器 |
提供一种按顺序遍历聚合对象元素的方法,而不暴露其底层表示。 |
调解人 |
允许通过使对象仅通过一个中介对象进行通信来减少对象之间的复杂依赖关系。 |
纪念 |
提供将对象恢复到其先前状态的能力 (且不破坏封装)。 |
观察者 |
定义对象之间的一对多依赖关系,使得当一个对象的状态改变时,所有依赖它的对象都会被通知并自动更新。 |
状态 |
�允许对象在其内部状态发生变化时改变其行为。 |
策略 |
定义一族算法,封装每个算法,使其可以互换。 |
模板方法 |
在方法中定义算法的骨架,并将某些步骤推迟到子类。 |
�访客 |
�允许定义在对象结构上执行的新操作,而无需更改其操作对象的类。 |
�函数式编程
图书馆 |
URL |
�描述 |
PyMonad |
PyMonad 是一种在 Python 中基于 Haskell 和 F# 等编程语言的单子数据结构的实现,并提供了函数式编程中最常用的单子类型的实现。https://www.miguelfarrajota.com/2021/06/monads-in-python-with-pymonad/[文章] |
|
PyFunctional |
PyFunctional 是一个用于函数式编程的 Python 库,它提供了用于处理纯函数和可迭代对象的工具。 |
|
Toolz |
Toolz 是一个用于函数式编程的 Python 库,提供了用于处理纯函数和可迭代对象的工具。 |
|
Fn.py |
Fn.py 是一个用于函数式编程的 Python 库,提供了用于处理纯函数和可迭代对象的工具。 |
|
椰子 |
Coconut 为 Python 添加了多种功能,用于函数式编程,包括模式匹配。https://stackoverflow.com/questions/11909681/are-there-pattern-matching-functions-in-python-like-this[对话 sof] |
副作用
�循环
# impérative way
result = []
for i in inputs:
x = f(g(i))
result.append(x)
# idiomatic way
result = map(comp(f,g), inputs)