- 博客(156)
- 收藏
- 关注
原创 ArkTS中的空安全:全面解析与实践
nick`就能安全地获取配偶的昵称,如果`spouse`为空,就返回`undefined`,这也使得该方法的返回类型必须为`string | null | undefined`。在`foo`函数中,直接访问`a.value`会报错,因为`a`可能为空。当把它应用到可空类型的值上时,在编译时,这个值的类型就会从`T | null`变为`T`。这样定义后,变量`x`既可以赋值为`null`,也能赋值为`number`类型的值,并且在使用前通过判断`x`是否为空,能有效避免空值带来的问题。
2025-04-25 19:31:05
333
原创 Python 中 `r` 前缀:字符串处理的“防转义利器”
在 Python 中,字符串里的反斜杠 `\` 通常作为转义字符,用于表示特殊字符,如 `\n` 代表换行,`\t` 代表制表符。接下来,我们就深入探究 `r` 前缀的作用与实现原理。但当字符串以 `r` 开头时,Python 解释器会将该字符串识别为原始字符串,不再对其中的反斜杠进行转义处理,而是按照字面意思解释字符串中的每个字符 ,使反斜杠作为普通字符保留在字符串中。字符串里的 `\P`、`\S` 等若不使用原始字符串,可能会被错误地当作转义序列处理,使用 `r` 前缀则能保证字符串按原样输出。
2025-04-24 20:58:19
266
原创 深入探究Python中`__init__.py`文件的奥秘
而且,在一些复杂的项目中,使用`__init__.py`来管理包的初始化、导入控制等操作,能让整个包的逻辑更加紧凑和有序。3. **控制导入行为**:通过在`__init__.py`中定义`__all__`变量,我们可以精确控制使用`from package import *`这种导入语句时,哪些子模块会被导入。4. **简化导入路径**:在`__init__.py`文件中,我们可以预先导入一些常用的模块或子包,这样在其他模块导入时就可以简化路径。## 一、`__init__.py`的基础作用。
2025-04-23 18:49:24
274
原创 一文读懂PyCharm中Directory和Python Package的区别
比如,一个用于处理数学计算的包,可能会包含`math_operations.py`模块用于基本的数学运算,`matrix_operations.py`模块用于矩阵相关的计算,还可能有一个`sub_package`子包,里面存放一些更高级的数学算法模块。它可以随意包含各种类型的文件,文件的命名和存放位置也比较自由。在PyCharm中,`Directory`和`Python Package`虽然都是用于组织项目文件的方式,但它们在定义、结构、用途以及在PyCharm中的操作和标识等方面都存在明显的区别。
2025-04-22 20:32:22
424
原创 解锁编程新技能:深入理解泛型类型和函数
这意味着,当我们使用`MyHashMap`时,传入的键类型必须实现`hash`方法,这样我们才能在`set`方法中调用`k.hash()`。在这个例子中,`Interface`接口和`Base`类的类型参数都设置了默认值`SomeType`,`foo`函数的类型参数默认值为`number`。当我们使用`Derived1`类或调用`foo`函数时,如果不指定类型实参,编译器会使用默认值,这样可以简化代码的编写。通过这种方式,`last`函数可以接受任何类型的数组,并返回相应类型的最后一个元素。
2025-04-21 21:02:25
296
原创 深度解析接口:构建代码规范与实现多态的基石
在这个例子中,`Rectangle`类实现了`Shape`接口,提供了`calculateArea`和`draw`方法的具体实现,这样就可以通过`Shape`接口来操作`Rectangle`类的实例,实现多态性。接口通常包含属性和方法的声明,属性可以是字段、`getter`、`setter`或它们的组合形式,而方法则是定义行为的规范。这里的`color`属性就是一个字段,它规定了实现该接口的类必须包含一个`string`类型的`color`属性。一个类只能继承一个抽象类,而一个类可以实现一个或多个接口。
2025-04-19 13:07:09
838
原创 Python中type()函数的深度探索:类型检查与动态类创建
在这个例子中,我们通过`type()`函数创建了一个名为`Person`的类。这使得`Cat`类的实例`cat`能够访问来自不同层次基类的`alive`和`has_fur`属性,展示了通过动态创建类构建灵活类层次结构的可能性。通过将基类`Animal`作为元组的元素传入`type()`函数的第二个参数,我们创建的`Dog`类成功继承了`Animal`类的属性和方法。因此,`Duck`类的实例`duck`可以调用来自不同基类的`fly`和`swim`方法,展示了多继承为类的功能扩展带来的强大能力。
2025-04-18 21:26:08
708
原创 深入理解类:ArkTS面向对象编程的核心概念
通过合理运用类的各种特性,我们可以编写出结构清晰、易于维护和扩展的代码。无论是开发小型应用还是大型项目,对类的深入理解和熟练运用都是至关重要的。抽象类中还能定义抽象方法,抽象方法只有声明没有实现,且只能在抽象类中存在。字段是类中声明的变量,分为实例字段和静态字段。实例字段存在于每个类实例上,每个实例都有自己的一套。语言中,类的设计和使用对于构建复杂、可维护的应用程序至关重要。此外,还能用对象字面量创建实例,不过这需要在可推导类型的上下文中进行。里,类声明引入新类型,定义字段、方法和构造函数。
2025-04-17 22:22:54
721
原创 探索鸿蒙应用开发:ArkTS应用执行入口揭秘
应用程序的执行入口,是深入学习鸿蒙应用开发的重要基础。希望这篇文章能帮助大家对鸿蒙开发中的执行入口有更清晰的认识,在开发的道路上不断前行,创造出更多优秀的鸿蒙应用!与传统开发语言相比,它通过简洁直观的语法,让开发者能够更专注于界面布局和交互逻辑的设计。应用程序的执行入口是迈向成功开发的关键一步。数组则明确指定了应用启动时最先加载的页面,这个页面就是整个应用的执行入口。等),构建出了页面的用户界面,并设置了相应的交互逻辑,比如按钮点击后的日志输出。,它掌控着应用的各种配置信息,而执行入口的配置也在其中。
2025-04-16 19:19:40
374
原创 深入探索函数的奥秘:从基础到进阶的编程指南
今天,就让我们一起深入探索函数的奥秘,从函数声明开始,逐步了解函数的各种特性和用法。函数是编程中非常重要的概念,掌握函数的各种特性和用法,能够让我们编写出更加灵活、高效、可维护的代码。函数声明是创建函数的第一步,它包含了函数的名称、参数列表、返回类型和函数体。在函数声明中,为每个参数标记类型是非常重要的,这能确保函数在接收参数时进行类型检查,提高代码的可靠性。通过函数重载,可以为同一个函数编写多个同名但签名不同的函数头,以指定不同的调用方式。有时候,我们希望函数的某些参数是可选的,这就用到了可选参数。
2025-04-16 19:19:09
275
原创 JavaScript中的运算符与语句:深入理解编程的基础构建块
中的运算符和语句是编程的核心部分,熟练掌握它们能让我们编写出更健壮、高效的代码。无论是处理复杂的逻辑判断,还是进行循环迭代,这些基础知识都起着至关重要的作用。希望通过今天的分享,大家能对它们有更深入的理解,在编程的道路上更进一步!编程的世界里,运算符和语句就像是构建大厦的基石,它们是编写高效、灵活代码的基础。今天,我们就来深入了解一下这些重要的元素。:用于停止当前循环迭代,直接进入下一次迭代。,使用起来更加简洁高效。中的运算符与语句:深入理解编程的基础构建块。后带有标识符,还可以跳出指定的语句块。
2025-04-14 22:42:34
457
原创 ArkTS基础语法:从声明到类型的深度解析
数字字面量形式多样,整数字面量有十进制(如`0`、`117`、`-345`)、十六进制(以`0x`或`0X`开头,如`0x1123`)、八进制(以`0o`或`0O`开头,如`0o777`)、二进制(以`0b`或`0B`开头,如`0b11`)。2. **Object类型**:`Object`类型是所有引用类型的基类型,任何值(包括基本类型,会自动装箱)都能赋给`Object`类型的变量。1. **void类型**:`void`类型用于表明函数没有返回值,它只有一个值`void`,并且可用于泛型类型参数。
2025-04-13 16:58:35
334
原创 Python 中 `__init__` 方法的深入解析
在这个示例中,`Person` 类定义了 `__init__` 方法,它接收 `name` 和 `age` 两个参数。当我们创建 `Person` 类的实例 `p` 时,Python 会自动调用 `__init__` 方法,并将 `"张三"` 和 `25` 作为参数传递给它。需要注意的是,`__init__` 方法并非构造函数。当创建 `MyClass` 类时,`MyMeta` 的 `__init__` 方法会被调用,为 `MyClass` 类添加了一个自定义属性 `custom_attribute`。
2025-04-12 13:11:00
437
原创 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
568
原创 DevEco Studio:提升代码阅读与编辑效率的利器
DevEco Studio提供了代码快速注释功能,使用快捷键`Ctrl + /`(Windows系统)或`Command + /`(macOS系统),就能快速为选中的代码行添加注释,再次使用则可以取消注释。通过快捷键`Alt + 7`(Windows系统)或`Command + 7`(macOS系统)打开代码结构树窗口,在这里我们可以清晰地看到文件中全局变量、函数、类的成员变量和方法等内容,并且可以直接点击跳转到对应的代码行,方便我们在复杂的代码文件中快速定位关键部分。
2025-04-07 19:36:08
728
原创 构建第一个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
548
原创 探索鸿蒙操作系统:迎接万物互联新时代
此外,跨设备协作所带来的分布式开发复杂性,如设备间的网络通信和数据同步等问题,也给开发者带来了极大的困扰。在未来,随着HarmonyOS生态的不断发展和完善,相信会有越来越多的开发者加入其中,共同打造更加丰富、智能的应用生态,为用户带来更多便捷、高效的服务,推动万物互联时代的全面发展。在科技飞速发展的当下,万物互联的时代浪潮正席卷而来。1. **从单一设备延伸到多设备**:实现应用一次开发就能在多个设备上运行,软件实体可以在不同设备间灵活转移,并且多个设备能够协同工作,为消费者提供全新的分布式体验。
2025-04-02 22:02:52
273
原创 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
419
原创 Python中`nonlocal`关键字:深入解析与实践应用
inner_function`通过`nonlocal`声明,表明它要修改的`outer_variable`是外层函数中的那个变量,而非创建一个新的局部变量。这里,`counter`函数返回一个闭包`increment`。`increment`函数使用`nonlocal`修改外层函数的`count`变量,从而实现了一个简单的计数器功能。在这个状态机示例中,`transition`函数根据当前的`state`值进行状态转换,并通过`nonlocal`修改`state`,确保状态机的状态能够正确更新。
2025-03-26 07:32:09
823
原创 Python 变量作用域、global 关键字与闭包作用域深度解析 第三部分
在这个例子中,`count` 变量被封装在 `counter` 函数的作用域内,外部无法直接访问和修改它,只能通过 `increment` 函数来对其进行操作。在这个例子中,`multiplier` 函数返回一个闭包 `multiply`,闭包保存了 `factor` 的值。闭包可以将一些通用的逻辑封装在外部函数中,通过传入不同的参数来创建不同的闭包,从而实现代码的复用和灵活性。闭包可以把数据封装在外部函数的作用域中,只有内部函数能够访问这些数据,这有助于实现数据的隐藏和保护。
2025-03-24 19:34:28
842
原创 Python 变量作用域、global 关键字与闭包作用域深度解析 第二部分
在这个例子中,`modify_global_list` 函数内部使用 `append` 方法对全局列表 `global_list` 进行了原地修改,由于没有对 `global_list` 进行重新赋值,因此不需要使用 `global` 关键字。在这个例子中,`inner` 函数内部的 `print(x)` 语句会先在局部作用域查找 `x`,找到局部变量 `x` 的值为 `30` 并输出。内置作用域是 Python 内置函数和内置对象所在的作用域,这些函数和对象在任何地方都可以直接使用,无需导入任何模块。
2025-03-21 12:51:17
722
原创 Python 变量作用域、global 关键字与闭包作用域深度解析 第一部分
在 Python 编程中,理解变量的作用域、`global` 关键字的使用以及闭包作用域的概念至关重要。当我们在函数内部想要修改全局变量的值时,就需要使用 `global` 关键字进行声明。若不声明,在函数内部给变量赋值会创建一个新的局部变量,而不是修改全局变量。print(x, y) # 输出 10 20,全局变量 x 和 y 的值已被修改。不过,在实际编程中,过度使用全局变量可能会让代码的可维护性变差,因此建议谨慎使用。print(count) # 输出 1,全局变量 count 的值已被修改。
2025-03-20 19:09:19
435
原创 Python 中下划线 “_” 的多面性:从变量到约定
这样,即使`Child`类定义了同名的变量或方法,也不会与父类的`__private_variable`产生冲突,从而保证了类的封装性和继承体系的稳定性。这里,我们只关心`10`除以`3`的商,而余数对于当前逻辑并无用处,使用下划线接收余数,让代码简洁明了,同时也避免了创建一个无意义的变量名。在Python中,以单下划线开头的变量或方法通常被视为私有成员。在这个例子中,下划线“_”作为循环变量,仅仅是为了满足`for`循环的语法要求,它并不代表任何实际数据,我们更关注的是循环体中的操作会被执行5次。
2025-03-19 21:10:24
826
原创 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
930
原创 python打印输出到文件
通过本文的介绍,我们了解了Python中`print`函数输出到文件的两种主要方法:使用`print`函数的`file`参数和重定向`sys.stdout`。除了使用`print`函数的`file`参数,我们还可以通过重定向`sys.stdout`来实现将`print`函数的输出发送到文件中。1. **恢复原始输出**:在重定向`sys.stdout`后,一定要记得恢复原始的`sys.stdout`,否则后续的`print`函数调用可能会出现异常,或者导致输出结果不符合预期。
2025-03-17 22:19:20
1073
原创 python中print函数的flush如何使用
在 Python 中,`print` 函数的 `flush` 参数是一个布尔值,默认值为 `False`。在上述例子中,使用 `flush=True` 可以确保提示信息 `Please enter your name: ` 立即显示在控制台,让用户能够及时看到并输入信息。在交互式程序中,当你需要在用户输入前显示提示信息时,使用 `flush=True` 可以确保提示信息立即显示,避免用户等待。在一些需要实时显示日志信息的场景中,使用 `flush=True` 可以确保日志信息及时显示。
2025-03-16 22:38:46
1213
原创 关于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
725
原创 python中print函数入门
**`end`**:它表示输出结束时要添加的字符串,默认值是换行符(`'\n'`)。- **`file`**:此参数指定了输出的目标文件对象,默认值是 `sys.stdout`,也就是标准输出设备(控制台)。- **`flush`**:这是一个布尔值参数,用于指定是否强制刷新流。- **`sep`**:该参数用于指定多个对象之间的分隔符,默认值是一个空格(`' '`)。输出结果为 `1-2-3...4 5 6`,第一个 `print()` 函数使用 `-` 作为分隔符,用 `...` 作为结束符。
2025-03-14 14:14:39
329
原创 mysql数据库如何实现自动空值自动填充
在mysql中,假设我们由这样一个需求,现在搞到了一批数据,需要对这些数据进行预处理,其中一项就是数据中有一部分空值,现在我们要根据含有空值的这一列进行自动向前填充,用前面一行的值填充当前行,如果前面一行的值也是空值,那么再往前推,直到找到一行的值不是空值,就用它填充这些空值。-- 如果当前行的 convertible_rate 不为 NULL,则更新 prev_rate。-- 如果当前行的 convertible_rate 为 NULL,则用前一行的值替换。-- 如果遍历完数据,退出循环。
2025-03-13 22:45:47
358
原创 python中date模块的功能和常用方法
在 Python 里,`date` 模块属于 `datetime` 标准库,其主要功能是处理日期相关的操作。#### 3. `date.replace(year, month, day)`:替换日期中的年、月、日。#### 1. `date(year, month, day)`:创建 `date` 对象。- **日期格式化**:能将日期按照指定格式输出为字符串,也可把字符串解析成日期对象。- **日期计算**:支持日期的加减运算,便于计算两个日期之间的差值。- **日期表示**:可精准表示年、月、日信息。
2025-03-12 20:33:38
334
原创 python中time模块的常用方法及应用
**功能**:将一个时间戳(可选参数,默认为当前时间戳)转换为 UTC 时间的 `struct_time` 对象。- **功能**:将一个 `struct_time` 对象(可选参数,默认为当前本地时间)按照指定的格式转换为字符串。- **功能**:将一个时间戳(可选参数,默认为当前时间戳)转换为本地时间的 `struct_time` 对象。- **应用场景**:在需要将用户输入的时间字符串或从文件中读取的时间字符串转换为可处理的时间对象时使用。
2025-03-11 20:20:37
556
原创 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
785
原创 python如何把多维列表转换为dataframe
通过以上示例可以看出,将多维列表转换为 `DataFrame` 的关键在于将其转换为合适的二维形式,以便于使用 `pandas` 的 `DataFrame` 构造函数进行转换。- `pd.DataFrame(two_d_list)`:使用 `pandas` 的 `DataFrame` 构造函数将二维列表转换为 `DataFrame`。二维列表是最常见的多维列表形式,可将其看作表格数据,每一行对应 `DataFrame` 中的一行,每一列对应 `DataFrame` 中的一列。展开三维列表为二维列表。
2025-03-09 11:54:18
447
原创 python多维列表简述
可以理解为多个三维列表组成的集合,常用于处理一些具有更复杂结构的数据,如在处理视频数据时,若将视频看作是由多个帧组成,每个帧是一个三维的图像数据(包含高度、宽度和颜色通道),那么整个视频就可以用四维列表来表示,其中第四维可以表示时间维度上的帧序列。在实际应用中,还可能会遇到更高维度的列表,但随着维度的增加,数据的理解和处理难度也会急剧上升,通常需要结合具体的业务场景和数据特点来选择合适的数据结构。其形式是列表中的每个元素也是一个列表,每个子列表的长度可以相同,也可以不同。它是列表的列表的列表。
2025-03-08 15:42:56
929
原创 python中如何把list转换为dataframe之一维列表
关于dataframe与list的互相转换,要从两个角度不同维度去讲,一个是如何把list转换为dataframe,另一个是把dataframe转换为list。同时要考虑list的维度、dataframe的不同形状。先讲如何把list转换为dataframe。
2025-03-07 22:29:07
868
原创 python 使程序随机休眠几秒钟
random.gauss(mu, sigma)`会生成一个符合正态分布的随机浮点数,其中`mu`是均值,`sigma`是标准差。如果你想让程序在一个指定的时间范围内随机休眠,可以使用`random.uniform()`函数(用于生成浮点数)或`random.randint()`函数(用于生成整数)来生成随机的休眠时长。在 Python 中,可以使用`time`模块的`sleep`函数来让程序休眠指定的时间,结合`random`模块来生成随机的休眠时长。print("程序休眠结束,继续执行")
2025-03-06 15:44:13
662
原创 python如何遍历一个dataframe的第指定列
**使用 `apply()` 方法**:可以对列数据进行更复杂的操作,通过定义不同的函数来实现不同的功能,但在简单遍历场景下略显繁琐,但是如果在要在遍历的过程中,实现更加复杂的功能,可以使用apply()。- **使用 `itertuples()` 方法**:性能比 `iterrows()` 好,因为它返回的是 `namedtuple` 对象,内存占用少,迭代速度快。- **使用 `for` 循环遍历 `Series`**:代码简洁,适用于简单的遍历操作,性能相对较好。也可以通过索引访问,索引从。
2025-03-05 20:19:40
704
原创 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
623
原创 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
754
原创 pandas如何在dataframe上再添加一个dataframe
表示重新生成连续的索引。如果想要按列方向连接,即将。如果想要根据特定列进行合并,可以使用。上述代码中,默认根据索引进行合并,方法可以根据索引或指定的键将两个。连接在一起,默认是按行方向(进行合并或连接操作,主要有。函数用于根据指定的键将两个。函数可以沿着指定轴将多个。分别是左右连接,保留两个。表示采用外连接的方式,)进行连接,即将一个。函数按行方向连接两个。方法根据索引进行合并。
2025-02-26 21:46:09
517
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人