- 博客(144)
- 收藏
- 关注
原创 Python 中 `__init__` 方法的深入解析
在这个示例中,`Person` 类定义了 `__init__` 方法,它接收 `name` 和 `age` 两个参数。当我们创建 `Person` 类的实例 `p` 时,Python 会自动调用 `__init__` 方法,并将 `"张三"` 和 `25` 作为参数传递给它。需要注意的是,`__init__` 方法并非构造函数。当创建 `MyClass` 类时,`MyMeta` 的 `__init__` 方法会被调用,为 `MyClass` 类添加了一个自定义属性 `custom_attribute`。
2025-04-12 13:11:00
305
原创 Python 中 main 函数:代码结构与组织的关键
通过 `args = parser.parse_args()` 获取用户在命令行输入的参数后,`main` 函数根据不同的参数值调用 `process_file` 函数并传入相应的参数,从而实现根据用户需求对文件进行不同方式的处理。在 `main` 函数中,我们可以轻松地设置测试数据(如 `num1 = 5` 和 `num2 = 3`),然后调用库中的函数(`add_numbers` 和 `multiply_numbers`)进行计算,并输出结果。`main` 函数是处理命令行参数的理想场所。
2025-04-09 21:20:06
542
原创 DevEco Studio:提升代码阅读与编辑效率的利器
DevEco Studio提供了代码快速注释功能,使用快捷键`Ctrl + /`(Windows系统)或`Command + /`(macOS系统),就能快速为选中的代码行添加注释,再次使用则可以取消注释。通过快捷键`Alt + 7`(Windows系统)或`Command + 7`(macOS系统)打开代码结构树窗口,在这里我们可以清晰地看到文件中全局变量、函数、类的成员变量和方法等内容,并且可以直接点击跳转到对应的代码行,方便我们在复杂的代码文件中快速定位关键部分。
2025-04-07 19:36:08
719
原创 构建第一个ArkTS应用:Hello World之旅
1. 创建第二个页面文件:在“Project”窗口中,打开“entry > src > main > ets” ,右键点击“pages”文件夹,选择“New > ArkTS File” ,命名为“Second” ,点击“OK” ,就可以看到文件目录结构新增了相关文件。- **build-profile.json**:工程全局配置信息,包含“signingConfig”“Profile”“product”等,其中“product”可配置当前运行设备的相关信息。
2025-04-04 19:29:52
537
原创 探索鸿蒙操作系统:迎接万物互联新时代
此外,跨设备协作所带来的分布式开发复杂性,如设备间的网络通信和数据同步等问题,也给开发者带来了极大的困扰。在未来,随着HarmonyOS生态的不断发展和完善,相信会有越来越多的开发者加入其中,共同打造更加丰富、智能的应用生态,为用户带来更多便捷、高效的服务,推动万物互联时代的全面发展。在科技飞速发展的当下,万物互联的时代浪潮正席卷而来。1. **从单一设备延伸到多设备**:实现应用一次开发就能在多个设备上运行,软件实体可以在不同设备间灵活转移,并且多个设备能够协同工作,为消费者提供全新的分布式体验。
2025-04-02 22:02:52
262
原创 Python 中的不可变数据类型的解析
Python 中的不可变数据类型包括数字类型(`int`、`float`、`complex`)、字符串(`str`)、元组(`tuple`)和冻结集合(`frozenset`)。当我们将 `a` 的值从 `10` 改为 `20` 时,`a` 的内存地址发生了改变,这表明我们创建了一个新的整数对象。这里,当我们将 `b` 的值从 `3.14` 改为 `2.71` 时,`b` 的内存地址也发生了变化,说明创建了新的浮点数对象。但实际上,我们创建了一个新的字符串对象,`s` 的内存地址也随之改变。
2025-03-27 15:54:20
412
原创 Python中`nonlocal`关键字:深入解析与实践应用
inner_function`通过`nonlocal`声明,表明它要修改的`outer_variable`是外层函数中的那个变量,而非创建一个新的局部变量。这里,`counter`函数返回一个闭包`increment`。`increment`函数使用`nonlocal`修改外层函数的`count`变量,从而实现了一个简单的计数器功能。在这个状态机示例中,`transition`函数根据当前的`state`值进行状态转换,并通过`nonlocal`修改`state`,确保状态机的状态能够正确更新。
2025-03-26 07:32:09
782
原创 Python 变量作用域、global 关键字与闭包作用域深度解析 第三部分
在这个例子中,`count` 变量被封装在 `counter` 函数的作用域内,外部无法直接访问和修改它,只能通过 `increment` 函数来对其进行操作。在这个例子中,`multiplier` 函数返回一个闭包 `multiply`,闭包保存了 `factor` 的值。闭包可以将一些通用的逻辑封装在外部函数中,通过传入不同的参数来创建不同的闭包,从而实现代码的复用和灵活性。闭包可以把数据封装在外部函数的作用域中,只有内部函数能够访问这些数据,这有助于实现数据的隐藏和保护。
2025-03-24 19:34:28
834
原创 Python 变量作用域、global 关键字与闭包作用域深度解析 第二部分
在这个例子中,`modify_global_list` 函数内部使用 `append` 方法对全局列表 `global_list` 进行了原地修改,由于没有对 `global_list` 进行重新赋值,因此不需要使用 `global` 关键字。在这个例子中,`inner` 函数内部的 `print(x)` 语句会先在局部作用域查找 `x`,找到局部变量 `x` 的值为 `30` 并输出。内置作用域是 Python 内置函数和内置对象所在的作用域,这些函数和对象在任何地方都可以直接使用,无需导入任何模块。
2025-03-21 12:51:17
716
原创 Python 变量作用域、global 关键字与闭包作用域深度解析 第一部分
在 Python 编程中,理解变量的作用域、`global` 关键字的使用以及闭包作用域的概念至关重要。当我们在函数内部想要修改全局变量的值时,就需要使用 `global` 关键字进行声明。若不声明,在函数内部给变量赋值会创建一个新的局部变量,而不是修改全局变量。print(x, y) # 输出 10 20,全局变量 x 和 y 的值已被修改。不过,在实际编程中,过度使用全局变量可能会让代码的可维护性变差,因此建议谨慎使用。print(count) # 输出 1,全局变量 count 的值已被修改。
2025-03-20 19:09:19
429
原创 Python 中下划线 “_” 的多面性:从变量到约定
这样,即使`Child`类定义了同名的变量或方法,也不会与父类的`__private_variable`产生冲突,从而保证了类的封装性和继承体系的稳定性。这里,我们只关心`10`除以`3`的商,而余数对于当前逻辑并无用处,使用下划线接收余数,让代码简洁明了,同时也避免了创建一个无意义的变量名。在Python中,以单下划线开头的变量或方法通常被视为私有成员。在这个例子中,下划线“_”作为循环变量,仅仅是为了满足`for`循环的语法要求,它并不代表任何实际数据,我们更关注的是循环体中的操作会被执行5次。
2025-03-19 21:10:24
804
原创 Python F-String 深度解析:原理、用法与最佳实践
相较于 `%` 格式化和 `str.format()`,F-String 的执行速度快约 20%,因为它减少了中间对象的创建。1. **优先使用 F-String**:替代 `%` 格式化和 `str.format()`| 浮点数精度 | `f"{3.1415:.2f}"` | `3.14` |- **特殊场景**:仅在与现有代码风格保持一致时使用 `F`- **官方推荐**:PEP 498 建议使用小写 `f`- **社区习惯**:小写 `f` 占比超过 95%
2025-03-18 22:29:05
916
原创 python打印输出到文件
通过本文的介绍,我们了解了Python中`print`函数输出到文件的两种主要方法:使用`print`函数的`file`参数和重定向`sys.stdout`。除了使用`print`函数的`file`参数,我们还可以通过重定向`sys.stdout`来实现将`print`函数的输出发送到文件中。1. **恢复原始输出**:在重定向`sys.stdout`后,一定要记得恢复原始的`sys.stdout`,否则后续的`print`函数调用可能会出现异常,或者导致输出结果不符合预期。
2025-03-17 22:19:20
890
原创 python中print函数的flush如何使用
在 Python 中,`print` 函数的 `flush` 参数是一个布尔值,默认值为 `False`。在上述例子中,使用 `flush=True` 可以确保提示信息 `Please enter your name: ` 立即显示在控制台,让用户能够及时看到并输入信息。在交互式程序中,当你需要在用户输入前显示提示信息时,使用 `flush=True` 可以确保提示信息立即显示,避免用户等待。在一些需要实时显示日志信息的场景中,使用 `flush=True` 可以确保日志信息及时显示。
2025-03-16 22:38:46
1151
原创 关于python的print函数的大对象输出
## 在 Python 中,`range(10**9)` 所占用的内存大小取决于 Python 版本,因为不同版本对 `range` 对象的实现方式有所不同,下面分别介绍 Python 2 和 Python 3 中 `range(10**9)` 的内存占用情况。通常情况下,`range` 对象占用的内存大小可能只有几十到几百字节,远小于 Python 2 中 `range` 函数生成的列表所占用的内存,但是在实际上python3在使用的时候依然要分配那么大的内存,只是分配的时机不同。
2025-03-15 09:02:01
719
原创 python中print函数入门
**`end`**:它表示输出结束时要添加的字符串,默认值是换行符(`'\n'`)。- **`file`**:此参数指定了输出的目标文件对象,默认值是 `sys.stdout`,也就是标准输出设备(控制台)。- **`flush`**:这是一个布尔值参数,用于指定是否强制刷新流。- **`sep`**:该参数用于指定多个对象之间的分隔符,默认值是一个空格(`' '`)。输出结果为 `1-2-3...4 5 6`,第一个 `print()` 函数使用 `-` 作为分隔符,用 `...` 作为结束符。
2025-03-14 14:14:39
324
原创 mysql数据库如何实现自动空值自动填充
在mysql中,假设我们由这样一个需求,现在搞到了一批数据,需要对这些数据进行预处理,其中一项就是数据中有一部分空值,现在我们要根据含有空值的这一列进行自动向前填充,用前面一行的值填充当前行,如果前面一行的值也是空值,那么再往前推,直到找到一行的值不是空值,就用它填充这些空值。-- 如果当前行的 convertible_rate 不为 NULL,则更新 prev_rate。-- 如果当前行的 convertible_rate 为 NULL,则用前一行的值替换。-- 如果遍历完数据,退出循环。
2025-03-13 22:45:47
344
原创 python中date模块的功能和常用方法
在 Python 里,`date` 模块属于 `datetime` 标准库,其主要功能是处理日期相关的操作。#### 3. `date.replace(year, month, day)`:替换日期中的年、月、日。#### 1. `date(year, month, day)`:创建 `date` 对象。- **日期格式化**:能将日期按照指定格式输出为字符串,也可把字符串解析成日期对象。- **日期计算**:支持日期的加减运算,便于计算两个日期之间的差值。- **日期表示**:可精准表示年、月、日信息。
2025-03-12 20:33:38
315
原创 python中time模块的常用方法及应用
**功能**:将一个时间戳(可选参数,默认为当前时间戳)转换为 UTC 时间的 `struct_time` 对象。- **功能**:将一个 `struct_time` 对象(可选参数,默认为当前本地时间)按照指定的格式转换为字符串。- **功能**:将一个时间戳(可选参数,默认为当前时间戳)转换为本地时间的 `struct_time` 对象。- **应用场景**:在需要将用户输入的时间字符串或从文件中读取的时间字符串转换为可处理的时间对象时使用。
2025-03-11 20:20:37
535
原创 python中如何把dataframe转换为列表及其性能比较
在处理较小规模的DataFrame时,`values`属性和`to_numpy()`方法的性能相近,都相对高效,因为它们底层都是基于NumPy数组进行操作,并且转换过程较为直接。从pandas 0.24版本开始可用,先使用`to_numpy()`方法将DataFrame转换为NumPy数组,再通过`tolist()`方法转换为列表。先通过`values`属性将DataFrame转换为NumPy数组,然后再调用`tolist()`方法将数组转换为列表。'名字': ['小明', '小红', '小张'],
2025-03-10 23:33:46
752
原创 python如何把多维列表转换为dataframe
通过以上示例可以看出,将多维列表转换为 `DataFrame` 的关键在于将其转换为合适的二维形式,以便于使用 `pandas` 的 `DataFrame` 构造函数进行转换。- `pd.DataFrame(two_d_list)`:使用 `pandas` 的 `DataFrame` 构造函数将二维列表转换为 `DataFrame`。二维列表是最常见的多维列表形式,可将其看作表格数据,每一行对应 `DataFrame` 中的一行,每一列对应 `DataFrame` 中的一列。展开三维列表为二维列表。
2025-03-09 11:54:18
442
原创 python多维列表简述
可以理解为多个三维列表组成的集合,常用于处理一些具有更复杂结构的数据,如在处理视频数据时,若将视频看作是由多个帧组成,每个帧是一个三维的图像数据(包含高度、宽度和颜色通道),那么整个视频就可以用四维列表来表示,其中第四维可以表示时间维度上的帧序列。在实际应用中,还可能会遇到更高维度的列表,但随着维度的增加,数据的理解和处理难度也会急剧上升,通常需要结合具体的业务场景和数据特点来选择合适的数据结构。其形式是列表中的每个元素也是一个列表,每个子列表的长度可以相同,也可以不同。它是列表的列表的列表。
2025-03-08 15:42:56
922
原创 python中如何把list转换为dataframe之一维列表
关于dataframe与list的互相转换,要从两个角度不同维度去讲,一个是如何把list转换为dataframe,另一个是把dataframe转换为list。同时要考虑list的维度、dataframe的不同形状。先讲如何把list转换为dataframe。
2025-03-07 22:29:07
795
原创 python 使程序随机休眠几秒钟
random.gauss(mu, sigma)`会生成一个符合正态分布的随机浮点数,其中`mu`是均值,`sigma`是标准差。如果你想让程序在一个指定的时间范围内随机休眠,可以使用`random.uniform()`函数(用于生成浮点数)或`random.randint()`函数(用于生成整数)来生成随机的休眠时长。在 Python 中,可以使用`time`模块的`sleep`函数来让程序休眠指定的时间,结合`random`模块来生成随机的休眠时长。print("程序休眠结束,继续执行")
2025-03-06 15:44:13
643
原创 python如何遍历一个dataframe的第指定列
**使用 `apply()` 方法**:可以对列数据进行更复杂的操作,通过定义不同的函数来实现不同的功能,但在简单遍历场景下略显繁琐,但是如果在要在遍历的过程中,实现更加复杂的功能,可以使用apply()。- **使用 `itertuples()` 方法**:性能比 `iterrows()` 好,因为它返回的是 `namedtuple` 对象,内存占用少,迭代速度快。- **使用 `for` 循环遍历 `Series`**:代码简洁,适用于简单的遍历操作,性能相对较好。也可以通过索引访问,索引从。
2025-03-05 20:19:40
680
原创 pandas如何在指定位置添加一个dataframe
如果`df1`和`df2`的行数或列数不匹配,可能需要根据具体情况进行调整,比如使用`reindex`方法来对齐索引等。在`pandas`中,可以使用`concat`函数结合索引操作等在指定位置添加一个`DataFrame`。假设有两个`DataFrame`,`df1`和`df2`,要将`df2`按行添加到`df1`的指定位置`n`。首先将被插入的的dataframe分成两份,然后使用concat方法将三个dataframe连接到一起。如果要将`df2`按列添加到`df1`的指定位置`m`。
2025-03-04 21:48:09
619
原创 RuntimeWarning: invalid value encountered in scalar power在进行标量的幂运算时遇到了无效值
2. **除以零**:如果 `initial_cash` 为 `0` ,那么 `profit / initial_cash` 会得到 `inf`(无穷大)或者当 `yy` 为 `0` 时,`1 / yy` 也会得到 `inf` ,后续的幂运算就可能出现无效值情况。但是在复数范围内是可以表示的,例如在复数范围内-4的平方根是2i和-2i。3. **数据类型问题**:如果 `profit`、`initial_cash` 或 `yy` 的数据类型不合适,导致运算结果不准确,也可能引发该警告。
2025-02-27 20:13:24
720
原创 pandas如何在dataframe上再添加一个dataframe
表示重新生成连续的索引。如果想要按列方向连接,即将。如果想要根据特定列进行合并,可以使用。上述代码中,默认根据索引进行合并,方法可以根据索引或指定的键将两个。连接在一起,默认是按行方向(进行合并或连接操作,主要有。函数用于根据指定的键将两个。函数可以沿着指定轴将多个。分别是左右连接,保留两个。表示采用外连接的方式,)进行连接,即将一个。函数按行方向连接两个。方法根据索引进行合并。
2025-02-26 21:46:09
499
原创 pandas如何添加列
如果要添加的列是一个常量值或者可广播的序列,可以直接通过索引赋值的方式添加新列。方法可以在指定位置插入新列。的情况下添加新列,并返回一个新的。添加一个基于现有列计算的新列。方法可以在不修改原始。创建要插入的新列数据。
2025-02-25 20:26:11
253
原创 pandas的dataframe如何在指定位置添加行
拆分成两部分,再将需要添加的行与这两部分进行连接。进行重新索引,可以通过重新索引在指定位置插入行。的末尾,结合起来可以在指定位置添加行。表示重置索引,丢弃原来的索引。索引器可以按标签选择数据,方法可以将一行或多行添加到。函数可以沿着指定轴将多个。连接在一起,可以先将原。中,可以使用以下方法。函数将三部分连接起来。的索引,为生成的新的。
2025-02-24 19:43:45
794
原创 dataframe如何在末尾添加多行
中添加多行该如何实现?可通过以下常见方式在。索引器分两次操作来添加两行数据。,默认)合并在一起,并重置索引,从而在原。,从而实现添加行的效果。,要添加的两行数据分别存储在字典。方法(旧版本支持,新版本已不推荐。这里先创建了一个包含两行数据的。方法将包含两行数据的新。末尾添加了两行数据。
2025-02-23 23:02:15
697
原创 pandas 如何在末尾添加一行
pandas 1.4.0之后不再使用append方法)方法(在旧版本中,以后不推荐使用)在。的尾部添加一条新行数据,使用方法是。方法(旧版本支持,新版本已不推荐。中已不推荐使用,建议优先使用。,要添加的数据存储在字典。这里将新行数据表示为。
2025-02-22 14:10:44
424
原创 mysql查错误`Error Code: 1248. Every derived table must have its own alias`
在查询的时候,特别是有子查询、多表查询的时候遇到的这个错误 `Error Code: 1248. Every derived table must have its own alias` , MySQL 数据库报出的这个错误翻译一下就是:每一个派生表都必须有自己的别名。在你提供的 SQL 语句里,子查询没有别名,所以 MySQL 无法识别它,从而抛出了这个错误。- 在子查询 `(SELECT ... )` 后面添加了 `AS subquery`,这里的 `subquery` 就是子查询的别名。
2025-02-21 10:26:22
824
原创 python查错误TypeError: bad operand type for unary -: ‘str‘
在这个示例中,首先使用 int(num_str) 将字符串 "10" 转换为整数 10,然后对整数应用一元减号运算符,得到结果 -10。这里使用 float(num_str) 将字符串 "3.14" 转换为浮点数 3.14,再应用一元减号运算符,得到结果 -3.14。在这个示例中,字符串 "abc" 无法转换为数值类型,因此会触发 ValueError 异常,执行 except 块中的代码,输出错误信息。
2025-02-20 22:50:39
715
原创 mysql查询判断函数,类似decode
select a.name,decode(a.department,'HR','人力资源部','IT','信息技术部','Finance','财务部','其他') as department_ch from employees a;-- CASE 表达式是实现类似 DECODE 功能的最常用方式,它有两种形式:简单 CASE 表达式和搜索 CASE 表达式。IF(department = 'Finance', '财务部', '其他部门')ELSE '其他部门'(1, '张三','HR'),
2025-02-18 23:33:50
533
原创 pypthon字符串与日期转换
可使用datetime模块将字符串转换为日期类型,使用datatime 的strptime方法时候需要指定日期格式。指定日期格式:根据日期字符串的格式,定义对应的日期格式字符串。例如,日期字符串为"2024-12-12",对应的日期格式字符串为"%Y-%m-%d"。%H:24 小时制的小时数(00 - 23)%I:12 小时制的小时数(01 - 12)%m:两位数的月份表示(01 - 12)%Y:四位数的年份表示(如 2024)%d:两位数的日表示(01 - 31)%y:两位数的年份表示(如 24)
2025-02-17 22:46:14
484
原创 pythonpython爬虫预备知识二-序列化和反序列化
序列化是为了将内存中的数据保存在磁盘上或者用于传输,实现程序状态的保存和共享。反序列化反之。序列化后的变量再被反序列化回来之后,两者之间已经没有任何关系。序列化后的文件是在不同程序或者说不同语言之间传递数据的关键方法之一,可以将内容标准化为xml、json等格式,用于存储或者网络传输。
2024-08-06 21:56:07
903
原创 python爬虫预备知识一
正常的文件读取使用的过程是,打开文件,建立文件对象,读取内容或者写入内容,关闭文件对象释放资源。分离一个路径的目录名和文件名,os.path.split(r’/home/data/test.txt’),返回一个元组(‘/home/data’,’test.txt’)分离扩展名,os.path.splitext(r’/home/data/test.txt’),返回一个元组(‘/home/data/test’,’.txt’)只有name是必须得,后面的模式、缓冲是可选的,默认是读模式,默认无缓冲区。
2024-08-06 21:54:12
573
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人