随笔分类 - 学习记录
python设计模式
摘要:在 Python 中,设计模式是一种解决软件设计中常见问题的通用方法。设计模式并不是代码的具体实现,而是给出了一种结构或方法,帮助开发人员以最佳的方式解决问题。Python 中的设计模式与其他编程语言中的设计模式基本相同,但由于 Python 本身的特性(如动态类型、简洁的语法和强大的标准库),许多
python中的GIL
摘要:Python 中的全局解释器锁(Global Interpreter Lock,简称 GIL)是一种存在于 CPython 实现中的机制,它确保在任一时刻只有一个线程能够执行 Python 字节码,从而保证了解释器内部(尤其是内存管理和引用计数)的线程安全。下面将从多个角度详细解释 GIL 的机制、
python中的内存管理
摘要:Python 中的内存管理是 Python 解释器高效运行的重要基础,涉及对象的分配、释放以及内存碎片的控制。总体来说,Python 内存管理主要包括以下几个方面: 1. 私有堆与内存管理器 Python 所有对象和数据结构都存储在一个由解释器管理的私有堆中。内存的分配与释放都由 Python 内部
python中的多线程和协程
摘要:在 Python 中,多线程与协程都是实现并发编程的常用手段,但它们的实现机制、资源消耗和适用场景各不相同。下面将详细说明二者的原理、区别及各自的优缺点。 1. 多线程 原理与实现 多线程模型 多线程是在一个进程内部创建多个线程,每个线程拥有自己的调用栈和执行上下文。Python 提供了标准库 th
python中的生成器
摘要:Python 中的生成器是一种特殊的迭代器,它通过“惰性求值”(Lazy Evaluation)机制按需生成数据,而不是一次性计算或加载所有数据。这不仅让代码更加简洁,而且在处理大数据、流式数据、无限序列以及需要节省内存的场景下具有显著优势【citeturn0search0】。 1. 生成器的
python中的装饰器
摘要:Python中的装饰器(Decorator) 1. 什么是装饰器? 装饰器(Decorator)是 Python 中的一种高级函数功能,它允许在不修改原函数代码的情况下,动态地增强或修改函数的功能。常用于日志记录、权限验证、函数执行时间计算、缓存等场景。 装饰器本质上是一个高阶函数: 接受一个函数作
python中的format
摘要:Python 中的 format() 方法用于格式化字符串,功能非常强大、灵活,适合生成带变量的动态字符串。下面是 format() 的详细用法和实例讲解。 1. 基本语法 "模板字符串 {位置/名称}".format(参数) 花括号 {} 是占位符,format() 方法会将参数填入对应的占位符中
python中针对实例对象的方法
摘要:以下是包含 hasattr 的 Python 内置函数列表,类似于之前提到的各种方法: 1. getattr() 功能:获取对象的属性值。如果属性不存在,可以返回默认值。 语法:getattr(object, name, default) object: 对象 name: 属性名称(字符串) def
python中针对类本身的方法
摘要:当你提到 __getattribute__ 时,它是 Python 中一个特殊的方法,用于访问对象的属性。重载该方法可以控制访问实例属性的行为。在 Python 中,__getattribute__ 是所有属性访问的基础方法,每次你访问对象的属性时,都会调用它。除了 __class__、__mro_
SQL创建表的语法
摘要:在 SQL 中,创建表的基本语法是使用 CREATE TABLE 语句。通过这个语句,可以定义新表的结构,包括列(字段)名称、数据类型以及其他约束。 基本语法 CREATE TABLE table_name ( column1 datatype [constraint], column2 datat
Flask中的jinji2---过滤器
摘要:在 Jinja2 中,过滤器是用于对模板变量进行操作的工具,类似于管道。以下是 Jinja2 中常用的过滤器及其功能: 1. 字符串处理 capitalize 将字符串的首字母大写,其余部分小写。 {{ "hello world" | capitalize }} <!-- 输出: Hello wor
python中的堆
摘要:在Python中,堆(Heap)是一种特殊的完全二叉树结构,满足以下特性: 最大堆(Max Heap):父节点的值大于或等于子节点的值。 最小堆(Min Heap):父节点的值小于或等于子节点的值。 Python标准库 heapq 提供了一个 最小堆 的实现,虽然没有直接提供最大堆的实现,但是可以通
关于递归
摘要:递归是一个非常重要且常用的编程思想,尤其在树、图、动态规划等问题中非常有用。它的核心是:将问题分解为子问题,通过递归的方式解决更小的子问题,最终汇聚成整体的解答。 如果你对递归函数感到陌生,或者不确定如何编写一个递归函数,可以通过以下步骤逐步建立递归的理解和技巧。 递归的基本结构 递归函数通常有两个
python中的列表
摘要:在刷算法题时,Python 的列表(list)是非常常用的数据结构。列表的操作灵活且功能丰富,非常适合用来处理数组、队列、堆栈等问题。以下总结了常用的列表语法和在算法题中会用到的场景: 1. 列表的创建 直接创建 lst = [1, 2, 3, 4] 列表推导式 squares = [x ** 2
python中的队列
摘要:在 Python 中,队列(Queue)通常使用 collections.deque 来实现,因其提供了高效的从两端添加和删除元素的操作。队列通常遵循 先进先出(FIFO) 的原则,也就是最先插入的元素最先被移除。 队列的基本操作: append(x): 将元素 x 加入队列的尾部。 popleft
排序算法模板--python版
摘要:在刷算法题时,排序是一个非常常见的操作。Python 提供了多种排序算法的实现方式,而在一些经典的算法题中,我们需要手动实现不同的排序算法以符合题目要求。以下是一些常见的排序算法模板,包含了 冒泡排序、选择排序、插入排序、快速排序、归并排序 和 堆排序,这些算法的模板通常会在刷题中频繁用到。 1.
python中的图
摘要:在 Python 中,图(Graph)是一个非常重要的数据结构,特别是在刷算法题时。图有许多类型(如有向图、无向图、有权图、无权图等),并且涉及的算法(如深度优先搜索、广度优先搜索、最短路径等)都非常常见。以下是 Python 中常见的图的语法,尤其是刷算法题时用到的技巧。 1. 图的基本定义 图通
python中的二叉树
摘要:在刷算法题中,二叉树是常见的题型,掌握二叉树的基本语法和常见操作是非常重要的。以下是一些在Python中常用的二叉树语法及操作,特别是刷算法题时用到的。 1. 二叉树的定义: 首先定义二叉树的节点结构。每个节点通常有三个属性:val(节点的值),left(左子节点),right(右子节点)。 # D
python中的队列
摘要:在 Python 中,队列(Queue)是一种常见的数据结构,特别是在刷算法题时经常被用到。以下是队列相关的基础语法及其在算法题中的应用总结。 1. 队列的基本定义 队列遵循 FIFO(先进先出) 原则,可以通过以下方式实现: 1) collections.deque deque 是双端队列,支持快
python中的链表
摘要:在 Python 中,链表不是内置的数据结构,但可以通过类的方式实现自定义链表。以下是链表在刷算法题中常用的语法和操作方法。 1. 定义链表节点 链表节点是一个包含值和指向下一个节点的指针的结构: class ListNode: def __init__(self, val=0, next=None