跳转至

2023 年 7 月

Python 进阶教程系列 5:获取和修改被保护的属性

本文是 Python 进阶教程系列 5,主要介绍了 Python 私有化及 _ 下划线命名用途,以及使用 gettersetterproperty 来修改被保护的属性。

本文部分转载了 Python 私有化及 _ 下划线命名用途,已获得原作者授权。

Python 中没有真正的私有属性或方法,但有一些和命名有关的约定,让编程人员处理一些需要私有化的情况。我们常常需要区分私有方法、属性和公有方法、属性以方便管理和调用,在 Python 中如何做呢?

在变量、方法命名中有下列几种情况:

  • xx 公有变量/方法
  • _xx 前置单下划线
  • __xx 前置双下划线
  • __xx__ 前后双下划线
  • xx_ 后置单下划线

接下来分别介绍这几种带下划线命名的特性与区别。

Python 进阶教程系列 4:命令行参数

本文是 Python 进阶教程系列 4,主要介绍了 sysargparse 解析命令行参数。

命令行参数是指在运行程序时传递给程序的参数。例如,我们可以通过命令行参数来指定要处理的文件名、设置程序的配置选项等。

image-20230727235705211

Python 进阶教程系列 3:生成器

本文是 Python 进阶教程系列 3,主要介绍了生成器 generatoryield 的机制和 nextsend 的用法,并展示了如何用 generator 生成无限序列。

在循环中使用生成器作为迭代对象,就不用将所有需要遍历的值都全部计算出来再迭代,而是可以每迭代一次就计算一个需要遍历的值。

这种写法有以下几个好处:

  1. 节省内存资源:生成器以延迟计算的方式逐个生成数据,不会一次性生成所有数据,因此可以避免在内存中存储大量数据,从而减少内存资源的占用。
  2. 更快的计算速度:由于生成器以延迟计算的方式逐步生成数据,避免了一次性计算所有数据所带来的资源浪费,因此生成器往往比一次性生成所有数据的方式更加高效。
  3. 更灵活的逻辑处理:生成器可以动态地生成数据,并且可以支持迭代过程中的数据清洗、处理等操作,从而让代码更加灵活、简单。

Python 进阶教程系列 2:装饰器

本文是 Python 进阶教程系列 2,主要介绍了装饰器的机制和用法。

Python 是一种功能强大的编程语言,其灵活性和可扩展性使得开发者能够创造出各种强大且高效的应用程序。其中一个让 Python 如此受欢迎的特性就是装饰器(Decorators)。

装饰器是一种可以动态地修改某个类或函数的行为的函数,它们在不修改源代码的情况下为已经存在的函数或类添加额外的功能。

我对装饰器的理解是:装饰器即为“传入一个函数,传出一个被加工后的函数”的函数。

Python 进阶教程系列 1:双下划线的魔法方法

在构建大型项目时,一些进阶的 Python 开发技术能够让我们编写可复用、可拓展、更优雅、更高效的代码,使得代码清晰、整洁且便于维护。本系列笔记参考了 YouTube NeuralNine 频道Python Advanced Tutorials 系列视频,内容涵盖魔法函数、装饰器、生成器、参数解析等内容。

本文是 Python 进阶教程系列 1,主要介绍了双下划线的魔法方法的作用及示例代码,包括__init____str____len____getitem____add____call____format__ 等。

image-20230724232129477

常用的 Git 代码

本文记录了常用的 Git 命令,并转载了一些优质博文(见相关链接)作为补充。

三个基本概念

  1. 工作区 (Workspace) 是计算机中项目的根目录
  2. 暂存区 (Index) 像个缓存区域,临时保存你的改动
  3. 版本库 (Repository) 分为本地仓库(Local) 和远程仓库 (Remote)

simple

使用 Ruff 自动检查代码错误

在编写大型项目时,一些细节代码容易影响代码的正常运行。若花费太多时间检查变量命名、导入包等细节问题,则会大幅影响工作效率和心情。

Ruff 是一个代码分析工具,即 Linter,它可以用于检查代码中的语法错误、编码规范问题、潜在的逻辑问题和代码质量问题等,可以提供实时反馈和自动修复建议。

Ruff 的优点是速度非常快,且安装和使用都非常简单。使用 Ruff 可以帮助我们自动检查代码存在的错误(如变量未定义、缺失外部依赖包等),这一切都不需要真正花时间运行代码。

Shows a bar chart with benchmark results.

基于 giscus 为网站添加评论系统

giscus 是一个简单易用的评论系统,它使用 GitHub Discussions 的作为存储和管理评论的后端。网站的访客可以使用 GitHub 账号登录并发表评论,当有新评论时 GitHub 还会用邮件通知网站的主人。

本文记录了基于 giscus 为网站添加评论系统的过程。整个过程还算比较顺利,但中途遇到的关于一键配置多个页面展示评论系统的问题也困扰了我很久。将其记录于此,希望能帮助自己和他人。

image-20230722131239896

基于深度学习的中文文本错误识别与纠正模型总结

中文写作是许多人工作和生活的重要内容之一,在写作中使用准确的用词和清晰的句法,能够帮助文本的阅读者快速且正确地理解作者所表达的意思。如果一段中文文本存在大量错字(例如由于书写错误导致出现不存在的汉字)、别字(每个汉字都存在,但由于字音、字形相似但意义不同而混淆了搭配)和语法错误,这将使读者感到十分困惑,影响阅读体验。

在错别字层面,现代数字化的文本大多由用户通过输入法进行编辑,输入法内置词典的正确性使得文本不易形成错字,但由于输入时选中文字的疏忽、对词语搭配具有错误的认知等原因,别字的问题依然经常出现。在正式的书面写作中,使用未经组织的、口语化的文本也经常导致语法错误的出现。在语法层面,由于用户在文本输入法,语音输入法使用上的随意性,后续又缺少审核,极易产生语法错误内容。近年来随着自媒体的热潮,人人都是信息的生产者,互联网上语法错误的内容暴增,但语法不通顺的文本极大影响了用户体验。

为实现中文文本纠错、提高汉语使用的正确性,同时减少人工校验的成本,本文初步探讨了基于深度学习的中文文本错误识别与纠正模型,包括它的核心目标、从输入数据到输出数据的流程、训练模型需要用到的数据来源、使用的前沿模型以及现有论文的测试效果等。

使用 Web Scraper 爬取私募排排网的基金数据

私募排排网的数据仅针对部分人群开放,因此在获取数据时有诸多不便。例如,网站需要用户登录才能访问、数据 CSS 样式类别名称被加密等,这些障碍使得我们无法通过常规的爬虫手段方便地获取数据。

本文尝试了多种方法爬取私募排排网的数据,包括 selenium、浏览器工作流自动化的 Automa 插件和嵌入在浏览器开发者工具的 Web Scraper 插件。最终可行且易用的方法是使用 Web Scraper 插件,它在制作和使用爬虫程序时都十分简便。

image-20230712014807756

深入理解 GRU 及其 PyTorch 实现

本文介绍了 GRU 的网络结构,梳理了 GRU 的前向传播关系,即 \(t-1\) 时间步的隐状态 \(h_{t-1}\)\(t\) 时间步的输入 \(x_t\)、更新门 \(z_t\)、重置门 \(r_t\)\(t\) 时间步的隐状态输出 \(h_t\) 之间是如何转换的。为了更好地理解 GRU,本文给出了各个张量的维数大小关系的数值示例。最后,本文提供了使用 PyTorch 实现一个 2 层 GRU 模型的代码。

Gated Recurrent Unit