Python
文章平均质量分 88
Python是一种广泛使用的高级编程语言,由Guido van Rossum于1991年发布。它以简洁易读的语法、强大的标准库和跨平台支持而著称,适合从小型脚本到大型系统的开发。Python支持多种编程范式,包括面向对象、过程式和函数式编程,应用于数据分析、人工智能、Web开发等领域。
日晨难再
研三在读的学生,略懂芯片前端和中端,持续学习中
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C语言&Python&Bash:空白(空格、水平制表符、换行符)与转义字符
C语言中的空白(空格、水平制表符、换行符)被用于分隔Token,因此Token间可以有任意多个空白。原创 2024-11-11 14:38:21 · 1943 阅读 · 0 评论 -
Python:方法的链式调用
在Python编程中,方法的链式调用是一种简洁且优雅的编程风格,它允许你在一行代码中连续调用多个方法,这种编程模式在简化代码、提升可读性和减少代码冗余方面发挥了重要作用。链式调用的原理是通过在每个方法结束时返回对象自身(通常命名为self),从而使后续的方法能够继续作用在同一个对象上。本文将深入探讨Python中链式调用的基本概念、优势、实现方式,以及常见的使用场景。原创 2024-10-11 20:27:00 · 1249 阅读 · 0 评论 -
Python:赋值的本质其实是引用
在Python编程中,我们经常会遇到各种赋值操作,无论是简单的变量赋值,还是复杂的数据结构操作。表面上看,赋值就是把一个值“赋予”给另一个变量,但其实Python中的赋值并不像很多人理解的那样简单。赋值的本质其实是“引用”,这个概念在理解Python的内存管理和性能优化时尤为关键。原创 2024-10-11 01:29:43 · 1488 阅读 · 0 评论 -
Python:import语句的详细解析(绝对路径导入和相对路径导入)
import语句是Python中一个很重要的机制,允许在一个文件中访问另一个文件的函数、类、变量等,本文就将进行详细介绍。原创 2024-09-30 17:44:50 · 5294 阅读 · 2 评论 -
Python:Pip包的安装与原理(Windows系统)
pip是Python的包管理工具,用于安装、升级和卸载Python包和依赖。它的全称是“Pip Installs Packages”,是Python生态系统中的标准包管理器。pip从Python Package Index (PyPI)中下载和安装Python软件包,使得开发者可以轻松地管理项目的依赖项。原创 2024-09-30 00:17:05 · 3631 阅读 · 0 评论 -
Python:类的属性(实例属性、类属性)和方法(实例方法、类方法、静态方法)的详细解释
Python是一门面向对象的编程语言,其核心概念之一是类。类是对象的蓝图或模板,定义了对象的属性和方法。理解类的属性和方法对于掌握Python编程至关重要。本文将深入探讨Python中的类的属性和方法,帮助读者全面掌握这一重要主题。原创 2024-07-31 17:21:34 · 3803 阅读 · 0 评论 -
Python:setattr()函数和__setattr__()魔术方法
setattr()是一个python内置的函数,用于设置一个对象的属性值,一般情况下,可以通过点运算符(.)完成相同的功能,但是getattr()拥有一个点运算符无法实现的功能,就是允许使用字符串(甚至字符串内容可以不是一个标识符)来表示属性名,从而可以在运行时动态地选择要设置的属性,这对于编写通用的代码或者处理动态数据结构很有用。原创 2024-07-14 21:05:00 · 1068 阅读 · 0 评论 -
Python基础:内置类type的用法
在python中,一切数据类型都是对象(即类的实例),包括整数、浮点数、字符串、列表、元组、集合、字典、复数、布尔、函数、自定义类等,它们都是根据相应的类创建的。 python内建类的定义可以在库文件/stdlib/builtins.pyi中找到,下面的例1示例性地给出了整数类型的定义。原创 2024-05-06 20:53:56 · 1034 阅读 · 0 评论 -
Python:可迭代对象与迭代器
根据Python官方文档,可迭代对象(iterable)是“一种能够逐个返回其成员项的对象”。具体来说,这种对象要么定义了一个返回迭代器(iterator)的魔术方法__iter__(),要么定义了魔术方法__getitem__(),并使用从0开始的整数索引。原创 2024-04-18 14:42:13 · 2041 阅读 · 0 评论 -
C语言&Python:比较运算符串联的差异
在C语言和Python中,比较运算符是一个常用的运算符,但这两种语言在某些情况下对比较运算符的解析缺存在差异,本文旨在明确这一点。原创 2024-03-04 15:33:07 · 1619 阅读 · 0 评论 -
Python:getattr()函数和__getattribute__()魔术方法
getattr()是一个python内置的函数,用于获得一个对象的某个属性,一般情况下,可以通过点运算符(.)完成相同的功能,但是getattr()拥有一个点运算符无法实现的功能,就是允许你使用变量来表示属性名,从而可以在运行时动态地选择要获取的属性。这对于编写通用的代码或者处理动态数据结构很有用。原创 2024-03-03 13:30:59 · 1435 阅读 · 0 评论 -
C语言&Python:表达式的求值顺序(evaluation order)的差异
C语言针对表达式的计算,设置了操作符的优先级和结合性这两个特性,优先级用于解析不同优先级的符号,结合性用于解析相同优先级的符号。但是这两个特性并不能完全确定表达式的计算顺序,这就给编译器留下了一定的优化的空间,下面举例说明这一点。假设有如下所示的简单表达式。原创 2024-02-13 16:53:27 · 1802 阅读 · 0 评论 -
Python:词法分析(行结构与显式、隐式行拼接)
1、逻辑结构一个Python程序由许多逻辑行组成,字面意义上的一行指的是末尾有换行符(\n),但在不同的情况下,行末尾的换行符(\n)可能有不同的意义。2、逻辑行 逻辑行的结尾的换行符(\n)被解析为NEWLINE标记。一般来说,一条语句不能跨越逻辑行而存在(除非是复合语句,如if复合语句可以由多个逻辑行组成)。根据显式或隐式行拼接规则,若干个物理行可以组成逻辑行。原创 2023-11-11 22:11:06 · 1052 阅读 · 0 评论 -
Python:函数调用的实参
如果任何关键字实参没有与之对应的形式参数名称,将会引发TypeError异常,除非有一个形式参数使用了**expression句法,该形式参数将接受一个包含了多余关键字实参的字典(使用关键字作为键而参数值作为与键对应的值),如果没有多余关键字实参,则它为一个(新的)空字典。其中,primary是原型,代表编程语言中最紧密绑定的操作,它的具体可以为几种形式,可以是一个简单的函数名标识符。第一种是位置实参列表,后面是可选的加*实参和关键词实参列表,最后是可选的加**实参和关键词实参列表。原创 2023-09-16 15:35:38 · 579 阅读 · 0 评论 -
Python:函数定义的形参
带星参数列表的第一种情况是,一个"*"加可选的带单星形参,后面有若干个defparameter,在这之后,还可以有一个"**"加带双星形参。其中参数列表的第一种情况是由/分隔的两部分,其中前半部分是至少一个可以带默认值的形参,被称作defparameter,但它们有位置实参限制,即只能使用位置传递参数,后半部分是无位置限制的参数列表。在另一种情况下,参数列表也可以只有无位置限制的参数列表。函数定义就是定义一个用户自定义的函数对象,它的语法的BNF范式如下所示,有关BNF范式的规则,可以参考之前的文章。原创 2023-09-15 11:07:32 · 980 阅读 · 0 评论 -
Python:列表推导式
列表推导式使得创建特定列表的方式更简洁。常见的用法为,对序列或可迭代对象中的每个元素应用某种操作,用生成的结果创建新的列表;或用满足特定条件的元素创建子序列。表达式是元组(例如上例的(x, y))或列表(例如[x, y])时,必须加上括号,即以下语句会报错。子句求值计算而得出一个新列表。列表推导式的方括号内包含以下内容:一个表达式,后面为一个。,该变量在循环结束后仍然存在,可以从代码中看到x的最终值是9。注意,这段代码创建(或覆盖)变量。注意,上面两段代码中,子句,然后,是零个或多个。原创 2023-09-03 11:58:32 · 667 阅读 · 0 评论 -
Python:多变量赋值
如果目标列表包含一个带有星号前缀的目标,这称为“加星”目标:则该对象必须是至少有‘’目标列表项数减一‘’项数的可迭代对象。该可迭代对象前面的项将按从左至右的顺序被赋值给加星目标之前的目标。在Python中还可以解包赋值,此时也需要保证右端的可迭代对象的项数等于左侧的目标列表项数(其实对于赋值号右边有多个表达式的情况,会返回一个包含各表达式的元组),如下例所示,这里同样可以使用加星目标。Python中的赋值语句可以同时对多个变量进行对象绑定(赋值),既可以是多变量链式赋值,也可以是多变量平行赋值,如下所示。原创 2023-09-02 11:55:04 · 1637 阅读 · 0 评论 -
Python:列表的浅拷贝与深拷贝
将列表变量名直接赋值给另一个变量,并不会创建一个新的列表对象,而是使得一个变量多了一个标签(变量名只是对象的一个标签,也可以理解为变量名只储存了对象的地址),所以此时对your_list或my_list的任何更改都会体现在同一个对象上。可以发现,虽然使用这三种方法新建了三个不同的列表对象,但这些对象的内容是一致的,也就是说三个列表对象的内容是同一批地址,此时列表对象的元素中有可变对象(如列表和字典等),则可能会出现意想不到的结果,如下代码所示。首先我们来看以下代码。原创 2023-08-23 20:51:27 · 845 阅读 · 0 评论 -
Python:标识符的作用域解析
在例4中,当解析到函数a内部的c时,Python会尝试在函数a中的局部作用域中查找是否定义标识符c,由于c=1语句,Python会认为在局部作用域定义了标识符c,因此将print(c)语句中的c绑定为函数内的标识符,而不是全局作用域的标识符c。Python在查找标识符的定义时,是一层一层从内向外直到全局作用域的,例7展示了一个嵌套多层的函数,它是没问题的,标识符test会被绑定为全局作用域的标识符test。Python允许在标识符定义前就调用它,但这里的使用指的不是真正意义上的执行。原创 2023-08-07 22:56:44 · 637 阅读 · 0 评论
分享