--- aliases: [] tags: - python - syntax created: 2025-08-03 04:08:51 modified: 2025-12-09 20:58:45 --- # Python 语法笔记 --- ## 基础语法 ### 变量表达式 #### 变量名规则 * 变量名只能包含字母、数字和下划线。不能以数字开头。 * 不能包含空格 * 不要用 Python 关键字和函数名或保留字作变量名 > [!tip] > >慎用小写字母**l**和大写字母**O**,因为可能与数字**1**和**0**混淆。 ### 简单数据类型 Python3 中有 6 个标准数据类型: * [数值](#syntax_basic_type_number) * [字符串](#syntax_basic_type_string) * [列表](#syntax_type_list) * [元组](#syntax_type_tuple) * [集合](#syntax_type_set) * [字典](#syntax_type_dictionary) > [!info] > > 不可变数据: [数值](#syntax_basic_type_number)、[字符串](#syntax_basic_type_string) 和 [元组](#syntax_type_tuple) > > 可变数据:[列表](#syntax_type_list)、[集合](#syntax_type_set) 和 [字典](#syntax_type_dictionary) #### 数值类型 ##### 整型 ##### 浮点型 ##### 复数 #### 字符串 ##### 表达方式 Python 中字符串有几种表达方式,可以使用单引号 `'`、双引号 `"` 或三引号(`"""` 或 `'''`)。 ##### 字符串索引 Python 字符串索引与 [C](../C/C_Note.md)、[Java](../Java/Java_Note.md) 从**0**开始。 ##### 字符串格式化 ###### format 方法 ### 复合数据类型 #### 列表 列表定义: ```python a = [1,3,4] ``` Python 的列表类型特点: 1. 元素**可重复** 2. 元素排列**有序** > [!tip] > > Python 的列表相当于 [Java](../Java/Java_Note.md) 中的 [数组](../Java/Java_Base_Note.md#数组) #### 元组 元组与 [列表](#列表) 类似,但元组是「**只读**」的。其由一系列特定顺序排列的元素组成,不同在于元组一旦创建其**元素不能被修改**,算是一种「特殊的」列表,又称为「不可变列表」。 > [!info] > > 元组类似于 [Java](../Java/Java_Note.md) 中的 [数组](../Java/Java_Base_Note.md#数组),但比数组还要「呆板」,Java 的数组只是数组这个容器大小,即数组的长度创建后不可变(因为数组是一块连续的内存,一旦分配了就无法更改),但数组中的元素是可以通过数组索引赋值的方式来修改的。而元组是完全不能对某个元素进行单独修改操作。 ##### 创建元组 ###### 通用创建语法 创建元组组,使用圆括号 `()`,元素间用逗号 `,` 区隔。圆括号 `()` 不是必需的,是**可省略**,当输出元组组时,Python 会自动加上一对圆括号。 语法:`变量名=(元素1,元素2,元素3,...,元素n)` 特殊语法 如果不向圆括号 `()` 传入任何元素,那么会创建一个空元组。 如果元组只包括**1**个元素,则需要在元素后面加逗号,否则圆括号会被当作运算符使用。 示例: ```python t1=(1,3,6,8,10) # 省略圆括号 t2=2,"hello",3.5 # 空元组 t3=() # 只包括1个元素 t4=(8,) # 或者省略括号,不过有点丑陋 t5=8, ``` ###### 使用 `tuple` 函数创建 `tuple` 函数能够将其他数据结构对象转换成元组类型。其类型可以是 range 对象、[字符串](#syntax_basic_string)、元组或其他可迭代类型数据。 示例: ```python tuple(range(5,15,2)) ``` ##### 元组操作 ###### 访问元素 ###### 截取 ###### 连接与重复 ###### 修改元素 元组一旦创建就不能修改其中的元素。但可以通过修改整个元组的变量来达到修改元素的目的。 示例: ```python t1 = (100, 200) # 打印出 100 200 print(t1) t1 = (20, 200) # 打印出 20 200 print(t1) ``` > [!info] > > 示例中的 `t1`,前后两次「创建」,t1 这个元组的第一个元素就由 `100` 被「修改」为 `20`。这属于「曲线救国」式修改。 ###### 删除元素 #### 集合 集合是由**不重复**元素组成的**无序**容器。Python 的中**集合**完全就是数学中的「集合] 概念的模拟,所以 Python 的集合中的元素特点:「**无序**」、「**不可重复**」。 > [!tip] > > 对应 [Java](../Java/Java_Note.md) 中的 [Set](../Java/Java_Base_Note.md#Set)。 > [!info] > > 关于列表和集合定义 > > 在「类 C 语言」的标识符中,`[]`(中括号)暗含了「**有序性**」,即使用 `[]` 定义的数据类型,其中的元素是**有序**的。这种**有序性**有时体现在存储的有序,如 [C语言](../C/C_Note.md) 或 [Java](../Java/Java_Note.md) 中的 [数组](../C/C_Note.md#数组) 是使用 `[]` 来定义的;而有时这种**有序性**体现在「**可索引**」上,即可以通过索引来获取相应位置的元素。 > > > 而 `{}`(花括号)则隐含了「**无序性**」,即使用 `{}` 定义的数据类型,其中的元素是**无序**的。与**有序性**类似,使用 `{}` 定义的数据其**无序性**,有时体现在存储上,如 C、Java 等语言中 [函数](../C/C_Note.md#函数) 的「函数体」就是使用花括号来定义的,而可以谁其中的语句其存储上是**无序**的;而在集合类型中,这种「**无序性**」便体现在「不可索引」上,即不能通过索引值来获取相应位置的元素。 ##### 创建集合 创建集合用花括号 `{}` 或 `set()` 函数。 示例: ```python # 使用花括号创建集合 b = {1,3,4} # 创建一个空的集合 b2 = set() ``` #### 字典 ### 函数 #### 函数参数 ##### 形式参数 [定义函数](#定义函数) 时,函数名称后面小括号的参数称为「**形式参数**」,简称「**形参**」。 ##### 形式参数 [调用函数](#调用函数)] 时,函数名称后面小括号的参数称为「**实际参数**」,简称「**实参**」。 #### 定义函数 定义函数基本语法: ```python def 函数名(参数列表): # 函数体 ``` 函数**定义部分**以 `def` 关键字开头,后接函数名、小括号 `()` 和冒号 `:`。 函数体由多条语句组成的代码块,相对于函数定义部分保持合理缩进。 如果函数有**返回值**,使用 `return` 语句返回。如果函数中没有 `return` 语句,或者省略 `return` 语句的表达式,将返回 `None`,即返回空值。 #### 调用函数 基本语法: ```python 函数名(实参1,实参2...) ``` 调用函数,实际就是将 [实际参数](#实际参数) 传递给 [形式参数](#形式参数),然后在函数体内实现相应功能的过程(函数本质在其实是表达式,即其核心功能就是求值,而求值之外的功能都称为「副作用」)。 ### 类 类定义的基本语法: ```python class 类名: # 类体 ``` > [!info] > > 类名一般使用大写字母开头,采用「**大驼峰命名法**」。 > > 类名后有个冒号 `:`,类体向右缩进。 #### 实例 创建类的实例基本语法: ```python 类名() ``` #### 属性 在类中定义的变量称为类的**属性**,根据定义位置不同,可以分为: * 类属性 * 实例属性 #### 方法 ##### 实例方法 ##### 类方法 ##### 静态方法 静态方法,其方法休中不能使用类或实例的任何属性和方法。 实例对象和类对象都可以调用类的静态方法。 静态方法是类中的 [函数](#函数),不需要实例。 > [!info] > > 静态方法逻辑上属于类,但是和类本身没有关系。也就是说,在静态方法中,不会涉及类的属性和方法的操作。 > > 可以说静态方法是个独立的、单纯的 [函数](#函数),只是「托管」给某个类的名称空间中,便于使用和维护。 ##### 专有方法 类的专有方法,**方法名**通常用「双下划线」`__`**开头**和**结尾**。 类的常用专有方法: * `__init__`:构造方法,生成对象时被调用 * `__del__`:析构方法,释放对象时被使用 ### IO #### 文件 #### 打开文件 使用 `open`[函数](#函数) 打开文件,并**返回文件对象**。如果文件无法被打开,会抛出 `OSError` 异常。 > [!tip] > > 使用 `open()` 函数时,一定要保证文件对象牌关闭状态。 语法: ```python file=open(filename[,mode[,buffering[,encoding=Nonne]]]) ``` * `file`:表示被创建的文件对象 * `filename`:用于指定包含待打开或待创建文件的文件路径与文件名称 [字符串](#syntax_basic_string) 值,需要使用单引号或双引号标。 * `mode`:可选参数,用于指定打开文件的模式,即描述文件如何使用,如读、写等。默认文件访问模式是「**只读**」,即 `r`。 常见模式及状态: | 模式 | r | r+ | w | w+ | a | a+ | |:------------------:|:-------:|:-------:|:-------:|:-------:|:-------:|:-------:| | 读 | ✔ | ✔ | | ✔ | | ✔ | | 写 | | ✔ | ✔ | ✔ | ✔ | ✔ | | 创建 | | | ✔ | ✔ | ✔ | ✔ | | 覆盖 | | | ✔ | ✔ | | | | 文件指针在开始位置 | ✔ | ✔ | ✔ | ✔ | | | | 文件指针在结尾位置 | | | | | ✔ | ✔ | --- ## 进阶语法 ### 多任务 ### 网络 ### 图形界面 --- ## 风格规范 ### PEP8 #### PEP8 相关链接 * [PEP 8 – Style Guide for Python Code](https://peps.python.org/pep-0008/) * [PEP 8 中文](https://blog.csdn.net/ratsniper/article/details/78954852) * [PEP 257 – Docstring Conventions | peps.python.org](https://peps.python.org/pep-0257/) ### Google 规范风格 #### Google 规范相关链接 * [Google Python 风格指南](https://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/contents/) * [Google Python 编码规范 中文版](https://www.runoob.com/w3cnote/google-python-styleguide.html) * [Google Python 编码规范 英文版](https://google.github.io/styleguide/pyguide.html) --- ## 相关笔记 * [Python 笔记](Python_Note.md) * [Python 资料清单](Python_Material.md) * [Python 视频](Python_Videos.md)