
python基础
文章平均质量分 83
niuguangshuo
字节跳动音视频算法专家;曾就职于大疆创新、快手、支付宝。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Python 编程中的 SOLID 原则
设计原则为软件开发提供指导,但在实际项目中,开发者需灵活应用,合理评估和取舍,以保证代码质量和项目进度。原创 2025-04-25 15:44:54 · 1038 阅读 · 0 评论 -
Python设计模式:MVC模式
MVC 模式是一种软件架构模式,用于将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。这种分离使得应用程序的结构更加清晰,便于管理和扩展。原创 2025-04-24 17:58:01 · 1430 阅读 · 0 评论 -
Python 设计模式:回调模式
回调函数是指作为参数传递给另一个函数的函数。当这个函数执行到某个特定的点时,它会调用这个回调函数。回调函数通常用于处理异步操作、事件处理或在某些条件下执行特定的操作。原创 2025-04-22 19:58:03 · 959 阅读 · 0 评论 -
Python设计模式:对象池
对象池设计模式是一种创建型设计模式,主要用于管理和复用对象,以提高性能和资源利用率。它通过维护一个对象的集合(池),来避免频繁地创建和销毁对象,从而减少内存分配和垃圾回收的开销。对象池通常用于那些创建和销毁成本较高的对象,例如数据库连接、线程、网络连接等。对象池的基本工作原理如下:对象池的优点:对象池的缺点:对象池通常用于以下场景:数据库连接类: 类模拟数据库连接,提供 和 方法。连接池类: 类管理数据库连接的池。它在初始化时创建一定数量的连接,并提供获取和释放连接的方法。可用连接计数: 方法返原创 2025-04-22 19:02:13 · 1131 阅读 · 0 评论 -
Python 设计模式:桥接模式
桥接模式的核心思想是将一个类的接口与其实现分离,使得两者可以独立变化。通过引入一个桥接接口,客户端可以通过这个接口来操作不同的实现,而不需要关心具体的实现细节。桥接模式是一种结构型设计模式,它通过将抽象部分与其实现部分分离,使得两者可以独立变化。桥接模式的核心思想是将抽象和实现解耦,从而提高系统的灵活性和可扩展性。类实现了具体的圆形类,并包含对实现部分的引用。类定义了实现部分的接口。类定义了抽象部分的接口,原创 2025-04-22 18:21:22 · 507 阅读 · 0 评论 -
Python 设计模式:模板模式
模板模式不仅仅是面向对象的继承机制,它是一种设计思想,强调算法的结构和步骤的复用。通过使用模板模式,我们可以提高代码的可维护性和可扩展性,避免代码重复,并使得系统在面对变化时更加灵活。理解模板模式的目的和应用场景,可以帮助我们在设计软件时做出更好的决策。原创 2025-04-22 18:02:50 · 924 阅读 · 0 评论 -
Python 设计模式:访问者模式
访问者模式是一种行为设计模式,它允许你在不改变对象结构的前提下,定义新的操作。通过将操作封装在访问者对象中,访问者模式使得你可以在不修改元素类的情况下,向元素类添加新的功能。访问者模式的核心思想是将操作与对象结构分离。通过引入一个访问者对象,允许你在不修改对象结构的情况下,定义新的操作。这样可以提高系统的灵活性和可扩展性。原创 2025-04-22 17:35:32 · 1024 阅读 · 0 评论 -
Python 设计模式:享元模式
享元模式是一种结构型设计模式,旨在通过共享对象来减少内存使用和提高性能。它特别适用于需要大量相似对象的场景,通过共享相同的对象来避免重复创建,从而节省内存和提高效率。isCircleradiusCircledrawShape类定义了享元对象的接口,包含一个draw方法。CircleShapedrawradiusCirclecircle1circle2类负责管理Circle对象的创建。每当请求一个圆形时,如果该半径的圆形已经存在,则返回共享的对象;否则,创建一个新的对象并存储。原创 2025-04-22 16:42:58 · 893 阅读 · 0 评论 -
Python设计模式:备忘录模式
备忘录模式是一种行为设计模式,它允许在不暴露对象内部状态的情况下,保存和恢复对象的状态。备忘录模式的核心思想是将对象的状态保存到一个备忘录对象中,以便在需要时可以恢复到之前的状态。这种模式通常用于实现撤销操作或历史记录功能。原创 2025-04-22 11:49:53 · 557 阅读 · 0 评论 -
Python设计模式:命令模式
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使您能够使用不同的请求、队列或日志请求,以及支持可撤销操作。命令模式的核心思想是将请求的发送者与请求的接收者解耦,使得两者之间的交互更加灵活。原创 2025-04-10 19:05:07 · 1193 阅读 · 0 评论 -
如何在多线程中安全地使用 PyAudio
在多线程环境下使用 PyAudio 可能会导致段错误(Segmentation Fault)或其他不可预期的行为。这是因为 PyAudio 在多线程环境下可能会出现资源冲突或线程安全问题。PyAudio 是一个用于音频输入输出的 Python 库,它依赖于 PortAudio 库。在多线程环境下,如果多个线程同时创建和销毁PyAudio实例,可能会导致资源冲突,从而引发段错误。在多线程环境下,尽量避免在每个线程中创建和销毁PyAudio实例。相反,应该在主线程中创建一个共享的PyAudio。原创 2025-04-08 20:04:39 · 1057 阅读 · 0 评论 -
Python设计模式:策略模式
策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,将每个算法封装起来,并使它们可以互换。策略模式使得算法的变化独立于使用算法的客户。换句话说,策略模式允许在运行时选择算法的实现,从而提高了代码的灵活性和可维护性。:定义了支付的公共接口,所有具体支付策略都实现这个接口。它包含一个pay方法,接受支付金额作为参数。:实现了策略接口的具体支付方式,封装了各自的支付逻辑。每个具体策略都实现了pay方法,提供了不同的支付处理方式。原创 2025-04-07 20:13:51 · 692 阅读 · 0 评论 -
Python设计模式:适配模式
适配模式(Adapter Pattern)是一种结构型设计模式,它允许将一个类的接口转换成客户端所期望的另一种接口。适配模式使得原本由于接口不兼容而无法一起工作的类可以协同工作。换句话说,适配模式充当了一个桥梁,允许不同接口的类之间进行交互。在软件开发中,常常会遇到需要使用现有类的情况,但这些类的接口与我们需要的接口不匹配。适配模式提供了一种解决方案,通过创建一个适配器类,将不兼容的接口进行适配,从而使得不同的类可以一起工作。原创 2025-04-07 18:49:03 · 523 阅读 · 0 评论 -
Python设计模式:代理模式
代理模式(Proxy Pattern)是一种结构型设计模式,它为其他对象提供一种代理以控制对这个对象的访问。代理模式通过引入一个代理对象来间接访问真实对象,从而在不改变真实对象的情况下,增加对其访问的控制和管理。在软件开发中,直接访问某个对象可能会涉及到复杂的操作、资源管理或安全问题。例如,在处理大型对象时,可能不希望在程序启动时就加载所有数据,而是希望在真正需要时才进行加载。此外,某些对象可能需要进行权限检查、日志记录或其他操作,这些都可以通过代理模式来实现。原创 2025-04-07 17:12:36 · 366 阅读 · 0 评论 -
Python设计模式:构建模式
构建模式(Builder Pattern)是一种创建型设计模式,它允许使用多个简单的对象一步步构建一个复杂的对象。构建模式通过将构建过程与表示分离,使得同样的构建过程可以创建不同的表示。换句话说,构建模式提供了一种灵活的方式来创建复杂对象,避免了构造函数参数过多的问题。原创 2025-04-07 16:58:09 · 861 阅读 · 0 评论 -
Python设计模式:组合模式
组合模式(Composite Pattern)是一种结构型设计模式,它允许将对象组合成树形结构以表示“部分-整体”的层次关系。组合模式使得客户端对单个对象和组合对象的使用具有一致性。换句话说,组合模式可以让客户端以相同的方式对待单个对象和对象的集合。在组合模式中,组件(Component)是一个抽象类或接口,定义了所有具体组件和组合的接口。叶子(Leaf)是组合中的基本元素,不能再包含其他子元素。组合(Composite)则是可以包含子组件的对象,能够实现对其子组件的操作。原创 2025-04-07 11:38:20 · 1022 阅读 · 0 评论 -
Python 设计模式:迭代模式
在实际项目中,自定义迭代模式可以用于处理复杂的数据结构,例如树形结构、图形结构或其他自定义集合。以下是一个稍微复杂一点的示例,展示如何使用迭代模式来遍历树形结构,并体现迭代模式的优势。假设我们有一个表示组织结构的树形结构,每个节点代表一个员工,包含员工的姓名和下属员工。我们希望能够遍历这个组织结构,获取所有员工的姓名。self.stack = [root] # 使用栈来存储待遍历的节点current = self.stack.pop() # 获取当前节点。原创 2025-04-03 18:03:24 · 1242 阅读 · 0 评论 -
Python 设计模式:外观模式
外观模式(Facade Pattern)是一种结构型设计模式,它为复杂的子系统提供一个简单的接口。通过定义一个高层接口,外观模式使得子系统更易于使用,从而隐藏了系统的复杂性。外观模式通常用于简化与多个类或模块的交互,使得客户端代码能够更方便地使用这些复杂的系统。在软件开发中,随着系统的复杂性增加,多个类和模块之间的交互可能会变得非常复杂。客户端需要了解多个类的细节才能完成某个操作,这不仅增加了代码的复杂性,也降低了可维护性。原创 2025-04-03 11:54:57 · 338 阅读 · 0 评论 -
Python设计模式:责任链模式
责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它允许将请求的发送者和接收者解耦。通过将多个处理对象连接成一条链,责任链模式可以让请求沿着这条链传递,直到有一个对象处理它为止。这种模式的核心思想是将请求的处理逻辑分散到多个处理者中,每个处理者负责处理特定类型的请求。原创 2025-04-01 19:09:57 · 1164 阅读 · 0 评论 -
Python设计模式:克隆模式
克隆模式的核心思想是通过复制一个已有的对象(原型)来创建一个新的对象(克隆)。这种方式可以避免重复的初始化过程,从而提高效率。clone。原创 2025-04-01 11:44:27 · 1075 阅读 · 0 评论 -
Python设计模式:中介模式
中介模式是一种行为设计模式,它通过引入一个中介对象来协调多个对象之间的交互。中介者负责管理对象之间的通信,避免了对象之间的直接引用,从而降低了系统的复杂性和耦合度。原创 2025-03-28 12:59:39 · 612 阅读 · 0 评论 -
数据挖掘上机报告---利用 Count-Min Sketch 识别频繁通信主机对
一、报告任务对于一个通信数据包,文件中每一行为:X,Y,代表IP为X的主机发向IP为Y的主机的一个数据包。使用Count-Min Sketch方法识别Top-10频繁通信主机对。二、算法原理Count-Min Sketch算法,用于解决大数据统计难题。算法的特点是:不存储所有的不同的元素,只存储它们Sketch的计数。基本的思路是为:1.创建一个长度为m的数组,用来计数,初始化每个元素的计...原创 2019-04-17 11:31:48 · 655 阅读 · 0 评论 -
在 Linux 服务器中保持 Python 脚本不挂断:使用 nohup 和 screen
为什么要确保程序不挂断?在远程工作时,网络连接可能会不稳定,或者你可能需要临时关闭终端。若在这些情况下运行的脚本未能保持活跃,可能会导致数据丢失或任务中断。尤其是在处理长时间运行的任务(如数据分析、机器学习模型训练等)时,意外中断会浪费大量时间和资源。因此,选择合适的方法来确保程序持续运行是非常重要的。使用方式与优劣势2.1 使用nohup使用方式:nohup(no hang up)命令用于忽略挂起信号,使得程序在用户退出后仍然继续运行。基本用法如下:nohup python your_script原创 2024-10-30 15:29:09 · 617 阅读 · 0 评论 -
Python设计模式:状态模式
状态模式是一种行为设计模式,它允许对象在其内部状态改变时改变其行为。换句话说,状态模式使得一个对象在其状态改变时能够表现得就像是改变了其类。原创 2025-03-26 11:33:01 · 984 阅读 · 0 评论 -
Python设计模式:监听模式
监听模式(Observer Pattern)是一种行为设计模式,允许对象(称为“观察者”或“监听者”)在另一个对象(称为“被观察者”或“主题”)的状态发生变化时接收通知。这种模式的核心思想是解耦,使得被观察者和观察者之间没有直接的依赖关系,从而提高系统的灵活性和可维护性。在监听模式中,观察者可以动态地注册和注销到被观察者。当被观察者的状态发生变化时,它会通知所有注册的观察者,观察者可以根据需要执行相应的操作。这种模式特别适用于需要处理异步事件的场景,例如用户界面事件、数据变化通知等。原创 2025-03-19 18:03:10 · 1094 阅读 · 0 评论 -
Deepseek本地部署指南:在linux服务器部署,在mac远程web-ui访问
32B 模型在推理基准测试中表现优异,接近 70B 模型的推理能力,但对硬件资源需求更低。通过上面的步骤,已经可以直接在 Linux服务器通过命令行的形式使用Deepseek了。设置OLLAMA_HOST=0.0.0.0环境变量,这使得Ollama服务能够监听所有网络接口,从而允许远程访问。为了确保您的Linux服务器允许从外部访问Ollama服务,您需要配置防火墙以允许通过端口11434的流量。在完成上述配置后,您可以通过远程设备(如Mac)测试对Ollama服务的访问。原创 2025-02-06 08:52:57 · 34239 阅读 · 31 评论 -
彻底解决 macOS 下Matplotlib 中文显示乱码问题
安装支持中文的字体:确保系统中安装了支持中文的字体。本文列出的一般都是系统自带的。配置 Matplotlib 使用这些字体:在 Matplotlib 中设置字体,以确保中文字符能够正确显示。# 设置字体为支持中文的字体matplotlib.rcParams['axes.unicode_minus'] = False # 解决负号 '-' 显示为方块的问题matplotlib.rcParams['font.family'] = 'Kaiti SC' # 可以替换为其他字体'''原创 2024-11-26 12:33:59 · 1461 阅读 · 0 评论 -
在 PyCharm 中使用 “Run on Console“ 查看和操作变量
Run on Console” 是 PyCharm 的一个特性,允许开发者在集成控制台中运行 Python 代码。通过这个功能,您可以在代码执行后直接与控制台进行交互,查看变量的值,并进行进一步的操作。通过 PyCharm 的 “Run on Console” 功能,您可以在程序运行完成后方便地查看和操作每个变量。这种交互式的调试方式能够极大地提高开发效率,帮助您快速验证代码逻辑和修复问题。原创 2024-11-07 11:16:42 · 1184 阅读 · 0 评论 -
Matplotlib 学习指南
Matplotlib 是一个用于绘制二维图形的库,尤其适合科学计算和数据分析。它的核心模块pyplot提供了一种类似 MATLAB 的接口,使得绘图变得简单直观。通过pyplot,用户可以方便地创建图形、设置图表属性和显示图表。Matplotlib 是一个功能强大的数据可视化库,适用于各种类型的图表和数据分析。通过本文的示例,您可以了解如何使用 Matplotlib 创建线图、散点图、柱状图、饼图等。掌握这些基本操作将有助于您在数据科学和数据分析中的工作。原创 2024-11-11 17:21:47 · 462 阅读 · 0 评论 -
理解 Python 中的迭代器和生成器
_iter__():返回迭代器对象本身。__next__():返回序列中的下一个值。如果没有更多的值可返回,则应该引发异常。下面是一个自定义迭代器的示例,它生成一个给定范围内的整数。else:# 使用自定义迭代器print(num)生成器是一个特殊类型的迭代器,使用yield关键字来返回值。生成器函数在执行时会暂停,并在后续调用时继续执行。生成器可以用更简洁的方式创建迭代器。迭代器和生成器是 Python 中非常强大的工具,它们允许您以高效且优雅的方式处理可迭代对象。原创 2024-11-08 17:48:08 · 566 阅读 · 0 评论 -
Pandas 常用操作指南
Pandas 是一个功能强大且灵活的数据分析库,适用于数据清洗、处理和分析。通过本文的示例,您可以看到 Pandas 提供了丰富的数据操作功能,包括数据选择、过滤、排序、分组、合并、清洗、导入导出等。掌握这些基本操作将有助于您在数据科学和数据分析中的工作。希望这篇博客能帮助您更好地理解和使用 Pandas!原创 2024-11-10 19:38:05 · 357 阅读 · 0 评论 -
深入理解 Python 中的闭包概念
闭包(Closure)是一个函数对象,它可以记住并访问定义时的作用域,即使在其外部调用时。简单来说,闭包是一个函数及其相关的环境(即自由变量)组合而成的对象。闭包的主要特性是它能够“捕获”外部作用域的变量,使得这些变量在函数外部仍然可用。原创 2024-11-08 16:35:25 · 724 阅读 · 0 评论 -
Python 中 YAML 和 JSON 对比
通过上述示例,我们展示了如何在 Python 中对 YAML 和 JSON 数据进行增、删、查、改(CRUD)操作。虽然 YAML 和 JSON 都是流行的数据序列化格式,但它们在语法和可读性上有所不同。YAML 更加可读,适合用于配置文件,而 JSON 则更轻量、解析速度快,广泛用于 Web 数据交换。在选择使用哪种格式时,应根据具体的应用场景和需求做出决定。希望本文能够帮助您更好地理解 Python 中 YAML 和 JSON 的操作及其优劣势!原创 2024-11-08 19:22:03 · 664 阅读 · 0 评论 -
PEP 8命名规范
文件名: user_management.pyclass User: # 类名def __init__(self, username, age): # 函数名self.username = username # 变量名self.age = age # 变量名def is_adult(self): # 函数名# 常量名def add_user(user): # 函数名。原创 2024-11-08 19:39:12 · 704 阅读 · 0 评论 -
Python 中常见方法的函数重写
在 Python 中,函数重写是面向对象编程的核心特性之一。通过重写父类的方法,子类可以提供特定的实现,从而实现多态和灵活的代码设计。常见的重写方法包括__init__speak__str____repr____len____add____iter__和__call__等。这些方法使得 Python 的对象更加灵活和强大,能够适应不同的需求和场景。通过合理使用函数重写,您可以编写出更具可读性和可维护性的代码。原创 2024-11-08 19:34:10 · 898 阅读 · 0 评论 -
Python简明教程读书笔记
1.在面向过程 的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在面向对象 的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如C++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。2.对于编辑器的基本要求之一是语法加亮功能,利用这一功能,你的Python程序的不同部分被标以不同的颜色,这样你可以更好 看清楚 你的程序,使它的运行显得形象化...原创 2018-09-05 19:53:25 · 330 阅读 · 0 评论