符号表
可根据知识点前的符号按需选学,并获取知识点描述和学习资源。
必学:核⼼知识点,经常⽤到。
建议学:重要知识点,专业⼈⼠的基⽯。
⾯试重点:经常出现的⾯试知识点。
可有可⽆:边缘区域,不是必须探索的地⽅。
知识描绘:知识点描述,快速理解。
学习资源:关联的学习资源。
学习⽬标:阶段性⽬标。
学习路线:基础
资源:
⽬标:能⽤Python编写待办事项列表应⽤程序:创建⼀个简单的控制台应⽤,允许⽤户添加、删除和查看待办事项。
Python 安装
开发⼯具:
VS Code
特点:跨平台,插件丰富,内置Git和终端,适⽤于多种编程语⾔。
PyCharm
特点: 专为Python设计,智能代码助⼿,强⼤的调试⼯具
Sublime
特点: 轻量级,快速,⾼度可定制,⽀持多⽂件同时处理,代码快速跳转。
变量
1、定义变量
-
在Python中,变量是存储数据值的容器。
-
定义变量时,不需要显式声明数据类型。Python是动态类型语⾔,会在运⾏时⾃动推断数据类型。
-
示例:x = 5 这⾥,x 是变量名,它被赋值为整数 5。
2、关键字
-
关键字是Python中预定义的、具有特殊意义的保留字。
-
关键字不能⽤作变量名、函数名或其他标识符。
-
示例:if, else, for, while, class 等。
3、命名规则
-
变量名必须以字⺟或下划线开头,不能以数字开头。
-
变量名可以包含字⺟、数字和下划线(A-z, 0-9, 和 _ )。
-
变量名是⼤⼩写敏感的,例如,myVar 和 myvar 是两个不同的变量。
-
应避免使⽤Python的内置函数名和关键字作为变量名,以防⽌冲突。
4、基本数据类型
-
数值类型: 如 int (整数), float (浮点数)。
-
字符串: ⽤于表示⽂本数据,例如 str。
-
布尔值: 表示真或假,如 bool(True 或 False)。
-
列表, 元组, 字典: ⽤于存储集合数据。
5、类型转换
-
可以使⽤内置函数如 int(), float(), str() 等来转换数据类型。
-
示例:int("123") 会将字符串 "123" 转换为整数 123。
-
⾃动类型转换发⽣在执⾏特定操作时,例如,将整数与浮点数相加时,整数会⾃动转换为浮点数。
运算符和表达式
描述:Python中的运算符和表达式是编程的基础元素之⼀,它们⽤于执⾏计算、值的⽐较和逻辑运算。
1、算术运算符
-
加法+
:⽤于两个数值的相加,如 3 + 4 结果为 7。 -
减法-
:⽤于两个数值的相减,如 5 - 2 结果为 3。 -
乘法*
:⽤于两个数值的相乘,如 3 * 4 结果为 12。 -
除法/
:⽤于两个数值的相除,如 8 / 2 结果为 4.0(结果总是浮点数)。 -
取模%
:返回除法的余数,如 5 % 2 结果为 1。 -
幂**
:⽤于求幂,如 2 ** 3 结果为 8。 -
整除//
:返回两数相除的整数部分,如 5 // 2 结果为 2。
2、⽐较运算符
-
等于==
: 判断两个值是否相等。 -
不等于!=
: 判断两个值是否不等。 -
大于 >、小于 <
: ⽐较两个值的⼤⼩。 -
大于等于 >=、小于等于 <=
: ⽐较两个值的⼤⼩,包含等于的情况。
3、逻辑运算符
-
与 and
: 两个条件同时为真时,结果为真。 -
或 or
: 两个条件中⾄少有⼀个为真时,结果为真。 -
非 not
: 取反,真变假,假变真。
4、赋值运算符
-
赋值 =
: 将右侧的值赋给左侧的变量,如 x = 5。 -
复合赋值:如 +=, -=, *=, /=, %=, **=, //= 等,将算术操作与赋值结合,例如 x += 3 等同于 x = x + 3。
5、身份运算符
-
is、is not
: ⽤于判断两个变量是否引⽤同⼀个对象。
6、成员运算符
-
in、not in
: ⽤于检查序列(如列表、字符串)中是否存在(或不存在)⼀个值。
流程控制
1、条件分⽀
-
if 语句
: 检查⼀个条件,如果条件为真,则执⾏相关代码块。 -
elif 语句
: 在if条件不满⾜时,检查另⼀个条件。 -
else 语句
: 当所有if和elif条件都不满⾜时,执⾏else部分的代码。
2、循环
-
for 循环
: 遍历序列或其他可迭代对象,对每个元素执⾏代码块。 -
while 循环
: 当给定条件为真时,重复执⾏代码块。
3、循环控制语句
-
break
: 提前退出整个循环。 -
continue
: 跳过当前循环的剩余部分,⽴即开始下⼀次迭代。
基本数据结构
1、字符串 (String)
-
⽤于存储⽂本。
-
由字符组成,如 "hello"。
-
不可变(immutable),意味着⼀旦创建,其内容不能更改。
-
提供丰富的⽅法进⾏操作,如索引、切⽚、连接和格式化。
2、列表 (List)
-
⽤于存储有序的数据集合。
-
可以包含不同类型的元素,如 [1, "hello", 3.14]。
-
可变(mutable),可以添加、删除或更改其元素。
-
⽀持索引和切⽚操作,可以通过索引访问或更改元素。
3、元组 (Tuple)
-
类似于列表,但是不可变。
-
⽤于存储有序的数据集合,如 ("apple", "banana", "cherry")。
-
⼀旦创建,不能修改其内容(添加、删除或更改元素)。
-
常⽤于函数返回多个值或将多个值作为⼀个整体进⾏处理。
4、集合 (Set)
-
⽤于存储⽆序的、唯⼀的元素集。
-
元素不重复,如 {1, 2, 3}。
-
可变,可以添加或删除元素,但不能包含可变元素(如列表)。
-
⽀持数学上的集合操作,如并集、交集、差集等。
5、字典 (Dictionary)
-
存储键值对,每个键对应⼀个值。
-
例如,{"name": "Alice", "age": 25}。
-
键通常是字符串或数字,值可以是任何数据类型。
-
可变,可以添加、删除或更改键值对。
-
⽆序,不能通过索引。
函数
定义
1、参数传递
-
函数可以接受参数,这些参数在函数调⽤时被传递给函数。
-
参数可以是必需的,也可以是可选的(带有默认值)。
-
Python还⽀持关键字参数(允许你通过参数名指定参数)和可变数量的参数(使⽤*args和**kwargs)。
2、作⽤域
描述: 在Python中,变量的作⽤域决定了在哪⾥可以访问该变量。
-
局部作⽤域:在函数内定义的变量只能在该函数内部访问。
-
全局作⽤域:在函数外定义的变量可以在整个代码中访问。
-
global关键字⽤于在函数内部访问全局变量。
-
nonlocal关键字⽤于在嵌套函数中访问外层函数的局部变量。
3、lambda 表达式
lambda表达式是⼀种创建匿名函数的⽅式。
4、常⽤内置函数
描述: Python提供了许多内置函数,这些函数随时可⽤,⽆需导⼊模块。
-
print():打印输出。
-
len():返回对象的⻓度或元素个数。
-
type():返回对象的类型。
-
range():⽣成⼀个数值序列。
-
str(), int(), float(): ⽤于类型转换。
-
input(): ⽤于从⽤户获取输⼊。
-
sum(): 计算序列中所有元素的总和。
-
max(), min(): 查找序列中的最⼤或最⼩值。
-
sorted(): 返回排序后的序列。
⾯向对象编程 (OOP)
1、类和对象
1.1 类 (Class)
-
类是创建对象的蓝图或模板。它为对象定义了特定的属性和⽅法。
-
类是⽤来定义数据以及数据操作的⽅法的。你可以将类看作是构建对象的模具。
1.2 对象 (Object)
-
对象是根据类定义创建的实例。每个对象都有特定的属性和⽅法。
-
对象是类的实例化,具有类定义的所有特性。每个对象都可以有不同的属性值,使得每个对象都是独⼀⽆⼆的。
-
对象的创建通常称为实例化,并且对象可以使⽤类中定义的⽅法。
2、三⼤特性
2.1 封装
描述: 封装是OOP中将数据(属性)和操作数据的代码(⽅法)捆绑在⼀起的概念。这样做的⽬的是隐藏对象的内部状态,只通过公共接⼝暴露功能。
-
self
: 在类的⽅法中,self代表类的实例⾃身。它是对当前对象的引⽤。 -
属性: 类的变量,⽤于存储数据。
-
⽅法: 类中定义的函数,⽤于定义对象的⾏为。
-
类⽅法(Class Method): 使⽤@classmethod装饰器定义,接受类本身作为第⼀个参数(通常命名为cls)。
-
实例⽅法(Instance Method): 类的普通⽅法,接受实例⾃身self作为第⼀个参数。
-
静态⽅法(Static Method): 使⽤@staticmethod装饰器定义,不接受self或cls参数,类似普通函数但属于类的命名空间。
-
访问控制: 控制外部对类内部属性和⽅法的访问权限。Python通过前置下划线实现(如单下划线 _ 和双下划线 __)。
2.2 继承
描述: 继承允许⼀个类(⼦类)继承另⼀个类(⽗类)的属性和⽅法,从⽽实现代码重⽤。
-
单继承: ⼦类只继承⼀个⽗类。
-
多继承: ⼦类可以继承多个⽗类。Python⽀持多继承,允许定义继承多个⽗类的类。
2.3 多态
描述: 多态是指不同类的对象对同⼀消息作出响应的能⼒,即相同的接⼝调⽤可以有不同的执⾏结果。
-
⽅法重写(Method Overriding): ⼦类可以重写⽗类的⽅法,提供特定于⼦类的实现。在调⽤这个⽅法时,会使⽤⼦类的版本,⽽不是⽗类的。
3、运算符重载
描述: 运算符重载允许为类的实例⾃定义Python内置操作符的⾏为。
-
通过定义特殊⽅法(magic methods),类可以改变其实例的运算符⾏为。
-
例如,通过重载__add__⽅法,可以定义两个类实例使⽤+运算符时的⾏为。
4、装饰器
描述: 装饰器是⼀种设计模式,⽤于修改或增强函数或⽅法的⾏为,⽽不改变其代码。
-
在Python中,装饰器是⼀种函数,它接受⼀个函数作为参数并返回⼀个新的函数。
-
装饰器通过在函数定义之前使⽤@符号应⽤,例如@decorator_name。
-
它们常⽤于⽇志记录、性能测试、事务处理、权限校验等。
-
装饰器可以应⽤于任何可调⽤的对象,包括类和类的⽅法。
5、反射
描述: 反射是指程序在运⾏时检查和修改其结构(如类或函数)的能⼒。
-
在Python中,可以通过内置函数如getattr(), setattr(), hasattr(), 和delattr()实现反射,⽤于动态地访问或修改对象的属性。
-
type()和isinstance()等函数可以⽤于获取对象的类型信息。
-
反射使得程序可以更加动态,例如根据条件动态调⽤⽅法或访问属性,但也可能使得代码难以理解和维护。
模块
描述:模块是包含Python代码的⽂件。模块可以定义函数、类和变量,也可以包含可执⾏的代码。模块的使⽤是Python编程的基础之⼀,它提⾼了代码的可重⽤性和组织性。
1、导⼊模块
描述: Python中导⼊模块通常使⽤import语句。
1.1 基本导⼊
-
直接使⽤import语句,后⾯跟模块名。
-
例如:import math。之后可以通过math.function_name的⽅式调⽤模块内的函数。
1.2 从模块导⼊特定项
-
使⽤from ... import ...语法。
-
例如:from math import sqrt。这样可以直接使⽤sqrt⽽⽆需math.sqrt。
1.3 导⼊模块并重命名
-
使⽤import ... as ...语法。
-
例如:import numpy as np。之后可以使⽤np来代替numpy。
1.4 导⼊模块的所有项
-
使⽤from ... import *语法。
-
这会将模块中的所有项导⼊当前命名空间,但通常不推荐这样做,因为它可能导致命名冲突。
2、常⽤模块
-
math
: 提供数学运算函数,如三⻆函数、对数函数等。 -
datetime
: ⽤于处理⽇期和时间的模块。 -
os
: 提供了许多与操作系统交互的功能。 -
sys
: ⽤于访问与Python解释器紧密相关的变量和函数。 -
random
: ⽤于⽣成随机数。 -
json
: ⽤于读取和写⼊JSON格式数据。 -
re
: 提供正则表达式⼯具。
包
描述: 包(Package)是⼀种组织模块的⽅式,它们是包含模块的⽂件夹,并提供了⼀种层次结构,使得模块组织更加清晰。包的使⽤使得⼤型项⽬的代码管理变得更加容易。
1、导⼊包
描述: 导⼊包的⽅法类似于导⼊模块,但它还涉及到包的层次结构。
1.1 直接导⼊包下的模块
-
使⽤import语句指定包名和模块名。
-
示例:import package.module。
1.2 从包中导⼊特定模块或函数
-
使⽤from ... import ...语法。
-
示例:from package import module 或 from package.module import function。
1.3 导⼊⼦包
-
如果包中还包含⼦包,可以通过.来导⼊⼦包中的模块。
-
示例:import package.subpackage.module。
2、⽣成包
描述: 创建⼀个包涉及到创建⼀个包含模块和⼀个特殊⽂件init.py的⽂件夹。init.py可以为空,但它的存在告诉Python这个⽂件夹应该被视为⼀个Python包。
2.1 创建包⽬录
-
创建⼀个⽂件夹,⽤于存放相关的模块。⽂件夹的名字就是包的名字。
2.2 添加模块
-
在这个⽂件夹中创建Python⽂件(.py),每个⽂件都作为包的⼀个模块。
2.3 添加__init__.py文件
-
在⽂件夹中创建⼀个名为__init__.py的⽂件。这个⽂件可以包含包的初始化代码,或者仅仅为空。
异常处理
1、捕获异常
在Python中,使⽤try和except语句来捕获异常。try块包含可能引发异常的代码,⽽except块包含在发⽣异常时要执⾏的代码。
2、try ... except ... else ... finally 结构
try语句还可以包含else和finally块。else块中的代码在try块中的代码没有引发异常时执⾏,⽽finally块中的代码始终会在try块执⾏后执⾏,⽆论是否发⽣异常。
3、⾃定义异常
在Python中,你可以通过创建⾃定义异常类来定义⾃⼰的异常类型。⾃定义异常类通常继承⾃内置的Exception类。
⽂件操作
1、打开⽂件
要与⽂件进⾏交互,⾸先需要打开它。使⽤内置的 open() 函数,传递⽂件路径和打开模式。打开模式包括:
-
'r':只读模式
-
'w':写⼊模式(会覆盖已存在的⽂件)
-
'a':追加模式(将内容添加到⽂件末尾)
-
'x':独占创建模式(如果⽂件已存在,则失败)
-
'b':⼆进制模式
2、读取⽂件内容
通过打开⽂件后,可以使⽤ read() ⽅法读取整个⽂件的内容。你还可以使⽤readline() ⽅法逐⾏读取,或者使⽤ readlines() ⽅法将内容按⾏读取并存储在列表中。
3、写⼊⽂件内容
使⽤ write() ⽅法可以向⽂件写⼊内容。如果⽂件不存在,使⽤ 'w' 模式将创建⼀个新⽂件。你还可以使⽤ writelines() ⽅法写⼊多⾏内容。
4、关闭⽂件
在完成⽂件操作后,务必使⽤ close() ⽅法关闭⽂件。这有助于释放系统资源。为了确保⽂件在任何情况下都会被关闭,可以使⽤ with 语句创建上下⽂管理器。