
问题
文章平均质量分 93
ZeroHeroX
这个作者很懒,什么都没留下…
展开
-
遍历 locals() 时可能产生的 RuntimeError
在 Python 中,你可以通过在局部作用域中调用 locals() 来更新与局部命名空间相关联的字典,使其内容与局部命名空间中的内容保持一致。在迭代 locals() 函数时,可能将引发 RuntimeError。其原因是,在迭代过程中产生的迭代变量将注册至当前作用域中,若在循环体中调用 locals() ,使得 locals() 字典更新,将导致被迭代字典对象的结构发生改变,从而引发了 RuntimeError 异常错误。原创 2023-05-25 20:49:50 · 658 阅读 · 0 评论 -
双面间谍:不同作用域下的 locals() 函数
局部作用域下的 locals() 返回的是与局部作用域相关联的命名空间字典,该字典是静态的。这意味着,字典中的内容并不与实际命名空间中的变化保持同步。全局作用域下的 `locals()` 返回的是与全局作用域相关联的命名空间字典,该字典是动态的(这一点与 Python 提供的 globals() 内置函数是相同的)。这意味着,字典中的内容时刻与实际命名空间中的变化保持同步。原创 2023-05-25 15:25:34 · 784 阅读 · 0 评论 -
遍历 globals() 时必不可少的 RuntimeError
字典在内部使用 散列表(也被称为哈希表) 来实现 键值对 的 存储 和 查找。散列表的 工作原理 涉及将键通过哈希函数转换为索引,然后在存储桶中存取相应的值。散列表的结构在 迭代过程 中是 敏感的。当你在迭代字典的 视图对象(字典提供的视图对象是动态的、实时反映字典内容变化的可迭代对象) 时,若 添加 或 删除 字典中的条目,会导致 字典的结构发生变化。当你迭代字典提供的视图对象时,迭代器会维护一个 内部状态 来跟踪字典的条目。如果在迭代过程中修改字典的大小,迭代器的内部状态与字典的实际状态将不再一致。原创 2023-05-25 10:12:34 · 1239 阅读 · 0 评论 -
小蝌蚪找妈妈:Python之作用域链与 LEGB 原则
作用域链是描述变量查找的顺序,它根据 LEGB 原则形成。当在代码中引用一个对象时,Python 会 按照 LEGB 的顺序进行对象的查找,直到找到 第一个匹配 的变量。在 Python 中,内置作用域对象可以通过访问全局变量 __builtins__ 来进行访问。__builtins__ 是一个特殊的全局变量,它指向一个模块对象,该模块对象包含了 Python 的内置对象。在 Python 中,每当函数被调用时,都会为其创建一个新的局部作用域对象。这意味着 每个函数 都有自己的 独立的 局部作用域,其中定原创 2023-05-24 20:20:01 · 792 阅读 · 0 评论 -
可远观而不可亵玩焉:Python 中的自由变量
在 Python 中,自由变量是在函数内部引用但没有在函数内部定义的变量,它们在函数外部的作用域中定义。自由变量可以是全局变量或局部变量。当在函数内部引用一个变量时,Python 首先在函数的局部作用域中查找该变量。如果没有找到,它会继续在外部作用域中查找。这种查找过程会持续到 找到变量 或达到全局作用域(更准确来说,应该是达到 内置作用域)。在默认情况下,Python 仅允许局部作用域访问自由变量,但不支持修改自由变量的值。当在函数内部修改自由变量时,Python 不允许 直接修改自由变量所保存的引用(内原创 2023-05-22 17:03:42 · 1354 阅读 · 0 评论 -
MySQL 数据库:字符串数据类型 ENUM
在 MySQL 中,枚举类型属于字符串类型的一种,但是与一般的字符串类型不同,它具有一个预定义的值域。在创建表时,您可以指定枚举类型的可能值,然后在 插入 或 更新 数据时,只能选择这些预定义值之一。在 MySQL 中,枚举类型中的枚举值对应的索引是指每个枚举值在枚举类型内部的 位置。当定义枚举类型时,每个枚举值都被映射到一个 整数值,这个整数值就是枚举值的索引。在枚举列中,枚举值的比较是通过比较其对应的整数索引来实现的。枚举值在排序时是基于其对应的整数索引进行排序的。由于枚举值被映射到整数索引,对枚举列进原创 2023-05-20 17:02:25 · 2110 阅读 · 0 评论 -
存储之道:MySQL 中的字符串数据类型之 CHAR 与 VARCHAR
VARCHAR 类型存储时使用 一个或两个字节的长度前缀来表示字符串的长度。这个长度前缀指示了 数据内容中的字符数。如果数据内容的长度不超过 255 个字符,则使用 一 个字节来存储长度信息;如果值的长度可能超过 255 个字节,则使用 两 个字节来存储长度信息。CHAR 255 字符 存储 固定长度 的 字符串,末尾会使用 空格 进行填充以满足指定长度要求 VARCHAR 65,535 字符 存储 可变长度 的 字符串,只占用实际存储的字符长度(单个字符所占据的存储空间由其使用的字符集决定)以及一或两原创 2023-05-19 21:11:22 · 6900 阅读 · 1 评论 -
灵魂拷问:如何优雅的与 Python 说再见?
os._exit() 函数是通过系统调用的方式来退出 Python 的。_exit() 函数同时存在于 posix 和 nt 模块中。在导入 os 模块后,该模块将会尝试从 posix 或 nt 模块中导入 _exit() 函数并将该函数添加至 __all__ 中,以使得导入 os 模块的文件也能够导入 _exit() 函数。在Python中,SystemExit 异常是一个特殊的异常,它被引发时会导致Python解释器退出。它继承自 BaseException,而不是 Exception,这意味着它不是一原创 2023-05-10 19:55:07 · 1117 阅读 · 0 评论 -
作为一等公民的 Python 函数
一等公民是指在编程语言中,某一类元素拥有与其他元素同等的地位和权利。这意味着这类元素可以作为参数、返回值、变量或者数据结构的元素来使用,也可以在运行时被创建、修改或者销毁。具体而言,一等公民是指语言中的 基本元素,可以被赋值、传递、返回,可以在运行时动态创建和修改,并且可以作为其他函数的参数和返回值。一等公民具有如下基本权益:作为函数的参数进行传递。作为函数的返回值进行返回。作为数据结构中的元素。能够被赋值给变量。能够被动态创建和修改原创 2023-05-09 11:31:12 · 854 阅读 · 2 评论 -
迭代探幽:生成的灵感,迭代的新境
惰性求值(Lazy evaluation) 是一种计算策略,它延迟计算表达式的值,直到实际需要时才进行计算。在惰性求值中,表达式的值不会立即被计算和存储,而是在需要使用该值的时候才进行计算。惰性求值的主要思想是避免不必要的计算,节省计算资源和提高性能。它适用于处理大型数据集、无限序列或复杂的计算任务,其中一次性计算所有值可能会导致内存不足或计算时间过长。通过惰性求值,可以将计算分解成更小的步骤,在需要时按需生成结果。这使得程序能够更高效地处理数据,避免不必要的计算开销。原创 2023-05-07 14:54:00 · 531 阅读 · 0 评论 -
从状态机的角度看 HTML 实体编码的解析:你知道 HTML 实体编码处于哪些位置时可以被正常解析吗?
HTML 实体编码的解释是与当前 HTML 解析器的状态相关的。在某些状态下,HTML 解析器可以正确地解析实体编码,而在其他状态下,它可能无法正确地解析实体编码。HTML 解析器仅能够在部分状态下解析 HTML 实体编码,这是为了避免在不应该使用实体编码的上下文中使用它们,从而导致解析错误或安全漏洞。HTML 规范对实体编码的使用有详细的规定,开发人员应该遵守这些规定来确保 HTML 代码的正确解析和安全性。HTML 解析器能够在属性值状态、文本状态及 RCDATA 状态(包括但不限于)下解析 HTM原创 2023-05-06 18:01:15 · 1790 阅读 · 0 评论 -
拨云见日:深入理解 HTML 解析器与有限状态机
HTML 解析器是一种将 HTML 文本解析为 DOM(Document Object Model) 树的程序。HTML 解析器通常分为两个部分:词法分析器和语法分析器。词法分析器将 HTML 文本分解成一个个词法单元(token),例如标签、属性、文本等。语法分析器将这些词法单元组合成一棵 DOM 树,并验证 HTML 文档的语法正确性。状态机(State Machine)是一种用来描述对象或系统的行为的抽象概念。它是由一组状态、一组转移条件和一组动作组成的。在任何时候,状态机只能处于其中一种状态。当满足原创 2023-05-05 17:36:08 · 1247 阅读 · 0 评论 -
Python ZIpFile 解惑:GBK 编码与乱码现象
在使用国内主流的 Zip 压缩软件将文件进行压缩后,若使用 Python 模块 ZipFile 对 Zip 文件中被存储文件的名称进行提取,往往会产生乱码现象。通用位标志 (General Purpose Bit Flag) 是一组用于 ZIP 文件头部的二进制位标记,大小为两个字节(即 16 bits),用于指示 ZIP 文件中的各种信息。用于指示 ZIP 文件中的文件名和注释信息采用的字符编码方式是否为 UTF-8。在中国地区,许多压缩软件默认使用 GBK 编码方式来处理文件名。原创 2023-04-24 15:43:55 · 2785 阅读 · 0 评论 -
寻找时间的痕迹:Python 与文件时间戳
在计算机中,文件时间戳(File Timestamp)是指用于记录文件在不同时间点的状态和属性的信息。在 Linux 操作系统中,你可以使用前面讲到的各种用于获取创建时间戳信息的来获取元数据更改时间戳。除了通过文件元数据信息获取时间戳信息外,我们还可以通过 os.path 模块中提供的函数直接获取目标类型的文件时间戳。os 模块提供了 utime() 函数,使用该函数我们将能够修改文件的访问时间戳及修改时间戳信息。原创 2023-04-22 11:09:49 · 803 阅读 · 0 评论 -
像素的奇妙冒险:使用 Python 玩转彩色图片的灰度处理
在将 RGB 转换为灰度值时,常使用心理学灰度加权公式进行两者的转换。心理学灰度加权公式是一种常用的计算灰度值的方法,用于将彩色图像转换为灰度图像。它考虑了人眼对不同颜色的感知程度不同,将红、绿、蓝三种颜色的值加权求和,得到一个综合的灰度值。在心理学加权灰度公式中,绿色的权重值相比其他两种颜色更高是因为 人眼对于绿色的敏感度更高。绿色的权重值更高意味着在进行灰度值的计算时,绿色通道的取值会对最终的灰度值产生更大的影响,从而更加符合人眼对图像的感知。原创 2023-04-18 20:18:33 · 702 阅读 · 0 评论 -
Python 项目之实现文件内容的反转再输入(二)逐行实现
1.从目标文件的起始位置开始读取每一行内容,将读取到的内容进行反转并 追加 到 结果文件中。2.将目标文件中的内容划分为以行为单位的列表元素,再将列表元素进行反转。在将列表中的元素依次输入到结果文件中前,将元素再一次进行反转。3.将目标文件中的内容划分为以行为单位的列表元素,再将列表元素进行反转。将读取到的结果反转并从结果文件的起始位置写入到目标文件中。原创 2023-04-02 11:04:56 · 384 阅读 · 0 评论 -
Python 与其四大推导式(列表推导式,集合推导式,生成器推导式及字典推导式)
列表推导式是 Python 官方提供的一种相对更为快捷的创建列表的方式,使用列表表达式你将能够写出更加优雅(更具有可读性,也相对更为简洁)的代码。在复杂的编程任务中,使用列表推导式来进行目标的达成,于人于己都将是一种享受。用于承接从序列中取出的元素的循环变量将被定义在其所处的环境中,这意味着循环变量可能会修改已定义的同名变量的值。在循环过程中,循环变量的改变会导致已有的同名变量发生改变,导致变量被污染。内的偶数的平方的列表。循环语句并在合适的位点使用合适的循环变量(列表推导式中,相邻的两个。原创 2023-03-30 00:00:19 · 965 阅读 · 0 评论 -
Python 项目之实现文件内容的反转再输入(一)完全反转
本项目的目的是将目标文件中的内容进行反转并将反转结果输出到另一个文件(结果文件)中。虽然项目看起来较为简单,但我们将通过三种方式(完全反转、逐行实现及逐字实现)来对此进行实现,并在实现过程中对相关知识进行相应的延展,在最后,我们还将对比三种方式的优劣及其适应场所,相信这能使我们对 Python 中与文件读写的相关操作有更深一步的认识。原创 2023-03-22 19:10:38 · 861 阅读 · 0 评论 -
Python 之常见运算符所带来的奇妙现象
取模运算符较为特殊,结果值的数据类型不一定为浮点型,这取决于取模运算符的操作数的数据类型。若操作数中含有浮点型,则结果值的数据类型为浮点型。若操作数均为整型,则结果值的数据类型为整型。在 Python 中,除法运算符无论遇到的操作数中是否包含浮点数,得到的结果都将为浮点数(除数不可为零,Python 将为此抛出错误)。字符串的乘法;浮点数的向上圆整、向下圆整及四舍五;取模运算的结果值的正负以及所属的数据类型。原创 2023-03-21 16:34:16 · 350 阅读 · 0 评论 -
C++ 之 this 指针或常量形参的传递问题或常量成员函数
隐式形参 this 为一个指针,指向函数所在的对象。你可以在成员函数中直接使用隐式形参 this 。this 指针仅能指向由所属类实例化的对象,将实参赋予形参的操作将在创建类的实例对象的过程中自动完成。承诺不修改 X 的函数不能将 X 传递给另一个函数,除非第二个函数也承诺不修改 X。原创 2023-03-11 19:44:05 · 1330 阅读 · 0 评论 -
Express 通过 CORS 或 JSONP 解决跨域问题
出现这种现象的原因是因为预检请求共包含两次请求,一次是 options 请求,即预检请求,该请求由浏览器自动发送;一次是正式请求。CORS 的相关响应头部的前缀均为 Acess-Control-Allow 。同源策略的一个主要功能就是有效阻止可能发生的 CSRF(Cross Site Request Forgery,跨站伪造请求) 。原创 2023-01-28 16:57:29 · 2438 阅读 · 0 评论 -
CSS @property(CSS 自定义属性)
@property CSS Houdini API 的一部分,它允许开发者显式地定义他们的 CSS 自定义属性, 允许进行属性类型检查、设定默认值以及定义该自定义属性是否可以被继承。接下来,我们将探索 CSS 变量与自定义属性的区别以及适合使用自定义属性的部分场景。原创 2023-01-25 14:39:07 · 3052 阅读 · 2 评论 -
找不到eth0的ifconfig(网络无连接)
解决Linux中ifconfig命令找不到eth0且网络无法连接的问题原创 2022-11-03 20:46:01 · 5918 阅读 · 3 评论 -
Kali 用户名及密码找寻记
重置kali 系统的root用户的密码,kali系统默认的账户及密码,root账户下home目录可以查看其他普通用户的文件,也可以查看有哪些用户。不登录kali的账户即可进行shell操作。原创 2022-11-07 19:39:00 · 9646 阅读 · 2 评论 -
WSL 错误 System has not been booted with systemd as init system (PID 1). Can‘t operate
请不要慌张,此前曾以为这种现象而认为这种方法没有效果。通过终端的输出可以发现,我使用的是 kali-linux,使用的版本是 WSL 2。以 kali-linux 为例,将其使用的 WSL 升级到 WSL 2使用的命令为。命令,使用该命令 WSL 将抛出如下错误。退出后再次进入 Linux 终端,不要使用。原创 2023-01-04 08:07:12 · 25070 阅读 · 5 评论 -
产生错误 ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061) 的两种原因
由于我安装了 PHP 集成开发环境phpstudy,phpstudy 内的 MySQL 服务使用的是默认端口 3306,为了不与其发生冲突,所以我将安装的 MySQL 使用的服务使用的端口号设置为 3360。若没有为 MySQL 设置开机自启动选项,则每次需要使用 MySQL 时,都需要手动开启 MySQL ,对于某些人来说,这显得过于繁琐,所以我们来开启 MySQL 的开机自启功能。在开启 MySQL 服务的过程中,我们需要知道 MySQL 服务的名称。滚动滚轮寻找 MySQL 服务,双击该项服务。原创 2022-12-26 15:52:01 · 19135 阅读 · 5 评论 -
CSS 艺术之心形-彩虹-加载动画
在该部分代码中,你如果没有为 ul 设置宽高,则 li 标签在动画过程中将发生轻微的抖动(在 li 标签使用的动画处于静止状态时)。animation 在 CSS 中常用来为选中的元素指定使用的动画并对动画的播放进行设置(如指定动画的持续时间)。原创 2023-01-22 17:23:08 · 2342 阅读 · 0 评论