1
0

Python:修订数据类型、模块和包

This commit is contained in:
周中平 2023-01-17 12:16:43 +08:00
parent 28c878d398
commit 58dd3942c4
No known key found for this signature in database
GPG Key ID: B1DF9DD42D8E00DC
2 changed files with 16 additions and 6 deletions

View File

@ -15,6 +15,17 @@ date: 2022-11-19
**Python中的一切都是对象变量是对象的引用同时 Python 的动态语言特性变量和常量不需要事先声明类型。** **Python中的一切都是对象变量是对象的引用同时 Python 的动态语言特性变量和常量不需要事先声明类型。**
Python 不同于其他程序设计语言使用**存储期(存储空间生命周期)** 对变量和对象进行管理Python 使用**引用计数**,即引用对象的变量个数,对变量和对象进行管理。
Python 可以使用 **id 函数**获取标识值(伪指针)、**type 函数**获取类型。
Python 中根据值是否可以改变,类型分为两类:
- **可变类型**:列表、字典、集合等。
- **不可变类型**:数值、字符串、元组等。
如果对不可变类型的变量(引用的对象)的值进行变更、则会生成新的对象,然后变量重新引用新的对象。**赋值语句复制的是对象的引用而不是值。** *Python 的“变量”不同于其他程序语言的“变量”Python 的“变量”翻译成“标志”更合适!*
**Python 3 内置类型**如下除了各种数据类型Python 解释器内建了还有很多其他类型,比如上下文管理器类型,模块、方法、代码对象、类型对象、内部对象等类型。 **Python 3 内置类型**如下除了各种数据类型Python 解释器内建了还有很多其他类型,比如上下文管理器类型,模块、方法、代码对象、类型对象、内部对象等类型。
| 类型 | 可变性 | 描述 | 语法例子 | | 类型 | 可变性 | 描述 | 语法例子 |
@ -101,6 +112,3 @@ $ print(keyword.kwlist)
- 用小写字母拼写,多个单词用下划线连接。 - 用小写字母拼写,多个单词用下划线连接。
- 受保护的实例属性用单个下划线开头(后面会讲到)。 - 受保护的实例属性用单个下划线开头(后面会讲到)。
- 私有的实例属性用两个下划线开头(后面会讲到)。 - 私有的实例属性用两个下划线开头(后面会讲到)。
Python 使用 `type() 检查变量的类型。
Python 使用 `id() 查看变量的内存地址。

View File

@ -22,7 +22,7 @@ date: 2022-11-28
### 自定义模块 ### 自定义模块
开发完成复用的模块。 开发完成复用的模块。
### 标准模块 ### 标准模块
@ -45,7 +45,9 @@ Python 拥有大量的第三方模块,这也是其核心优点之一。基本
Python 为了避免模块名冲突又引入了按目录来组织模块的方法称为包Package**包是模块的集合,比模块又高一级的封装。**包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。**包名通常为全部小写,避免使用下划线。** Python 为了避免模块名冲突又引入了按目录来组织模块的方法称为包Package**包是模块的集合,比模块又高一级的封装。**包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。**包名通常为全部小写,避免使用下划线。**
简单来说,包就是文件夹,但该文件夹下必须存在 `__init__.py` 文件, 该文件的内容可以为空。`__init__.py` 用于标识当前文件夹是一个包。 ### 标准包
简单来说标准包就是文件夹下必须存在 `__init__.py` 文件该文件的内容可以为空。如果没有该文件Python 无法识别出标准包。Python 中导入包后会初始化并执行 `__init__.py` 进行初始化;在 `__init__.py` 中,如果将`__all__` 定义为列表,其中包含对象名称的字符串,程序就可以通过 * 的方式导入。
```markdown ```markdown
test.py test.py
@ -169,7 +171,7 @@ def func():
func() # 从 module 导入的 func 被 main 的 func 覆盖了 func() # 从 module 导入的 func 被 main 的 func 覆盖了
``` ```
### 模块搜索路径 ### 模块路径搜索顺序
**不管在程序中执行了多少次import一个模块只会被导入一次。**导入一个模块Python 解析器对模块位置的搜索顺序是: **不管在程序中执行了多少次import一个模块只会被导入一次。**导入一个模块Python 解析器对模块位置的搜索顺序是: