目录
一、Python介绍
1.什么是 Python?
Python 是一门由 Guido van Rossum 于 1991 年创建并发布的流行编程语言。它以简洁性、灵活性和强大功能著称,语法风格类似于英语且受数学影响,强调代码可读性,通过缩进界定代码块,而非使用分号或括号,在不同平台(如 Windows、Mac、Linux、Raspberry Pi 等)上都能稳定运行。
2.Python 可以做什么?
-
Web 开发(服务器端):借助 Django、Flask 等框架,Python 能高效搭建 Web 应用。Django 是功能完备的重量级框架,内置用户认证、数据库管理等功能,适合开发大型 Web 应用,像 Instagram、Pinterest 等知名网站都基于此实现复杂业务逻辑和高并发处理;Flask 则是轻量级框架,便于开发者按需扩展插件,常用于小型 Web 应用和 API 接口开发 。
-
数据科学与机器学习:Python 是该领域的核心工具。Pandas 和 NumPy 库可高效处理和分析结构化数据;Scikit-learn 集成大量经典机器学习算法,方便模型训练与预测;TensorFlow 和 PyTorch 等深度学习框架,广泛应用于图像识别、自然语言处理、语音识别等领域,助力构建复杂神经网络模型。
-
自动化脚本与运维:在系统管理中,Python 可编写脚本自动化处理文件、监控系统状态、管理网络设备。通过 Paramiko 库能远程 SSH 连接服务器执行命令、传输文件;利用 Netmiko 库可与路由器、交换机等网络设备交互,实现配置自动化,大幅提升运维效率。
-
游戏开发:虽然 Python 在游戏开发领域并非主流,但 Pygame 库为 2D 游戏开发提供图形绘制、声音处理等功能,适合开发休闲、教育类游戏;此外,Python 还能与 Blender 等游戏引擎结合,通过脚本扩展游戏功能。
-
科学研究与教育教学:科学家常用 Python 处理实验数据、模拟复杂模型;在教育领域,因其语法简单易懂,Python 成为编程入门的首选语言,帮助学生快速掌握编程思维和基础技能。
3.为何选择 Python?
-
语法简洁易懂:Python 语法接近英语,代码行数少,新手容易上手,开发效率高。
-
多范式支持:可采用程序、面向对象或函数式等多种编程方式,满足不同开发需求。
-
解释型语言:Python 在解释器系统上运行,代码编写后可立即执行,利于快速原型设计。
-
丰富的库和框架:拥有海量第三方库和框架,涵盖 Web 开发、数据处理、机器学习等领域,极大减少重复开发工作。
-
跨平台兼容性:能够在多种操作系统上运行,且代码移植性强,降低开发和部署成本。
4.Python与其他语言的区别
语言 | 主要优势领域 | 典型应用案例 |
---|---|---|
Python | Web 开发、数据科学、自动化 | Instagram(Django)、数据分析脚本 |
Java | 企业级应用、Android 开发 | 大型企业系统、Android 应用 |
C++ | 游戏开发、系统软件、高性能计算 | 游戏引擎(Unreal Engine)、操作系统 |
JavaScript | Web 前端、Node.js 后端 | 网页交互逻辑、服务器端 API |
5.Python的生态库
数据科学:Pandas、NumPy、Matplotlib
机器学习:Scikit-learn、TensorFlow、PyTorch
Web 开发:Django、Flask、FastAPI
自动化:Selenium、Requests、Paramiko
二、Python入门基础知识
1.Python配置
如果不嫌麻烦可以安装python解释器
Welcome to Python.orgThe official home of the Python Programming Languagehttps://www.python.org/
不想安装直接用我这套,不用自己下载解释器,软件自动安装配置解释器
2025年AI的anaconda环境安装教程以及写python代码教程_register anaconda3 as the system python 3.13-优快云博客文章浏览阅读900次,点赞12次,收藏13次。《Anaconda安装与配置指南》摘要:本文介绍Anaconda的下载与安装流程。用户可从官网或国内镜像站(清华/北大)获取安装包,建议选择2025版本。安装时需注意:1)使用空文件夹存放;2)推荐勾选全部安装选项(包括创建快捷方式、注册默认Python等);3)不建议勾选PATH环境变量以避免冲突。安装后需验证:在cmd输入conda检查是否成功,若失败需手动配置系统环境变量(添加Anaconda及其Scripts路径)。最后通过Anaconda Navigator启动Jupyter Notebook。_register anaconda3 as the system python 3.13https://blog.youkuaiyun.com/partJava/article/details/148899591?spm=1001.2014.3001.5501也可以连着把这个也配置了,学python都用pycharm,但我的python讲解主要用Jupyter Notebook
也可以命令行输入python,试试输出hello world,exit()是退出命令行。都是英文符号。
2.Python语法
1.打开Jupyter Notebook,安装教程里面有讲解,
2.python缩进
标准的写法是自动缩进四个空格,但是空格数至少可为一
还要注意的是一个代码空格数要求数量一样,不然报错
3.Python注释
这个解释器格式化了符号,多行解释是例子那两种。
4.Python变量
Python 变量命名规则:
变量名必须以字母或下划线字符开头
变量名称不能以数字开头
变量名只能包含字母数字字符和下划线(A-z、0-9 和 _)
变量名称区分大小写(abc、Abc 和ABC是三个不同的变量)
Python 允许使用单引号或双引号定义字符串,效果完全一致
全局变量和局部变量\以及global变量
5.数据类型
以下是整理后的数据类型分类表格:
数据类型分类表
分类 | 数据类型 | 关键特性 & 典型场景 | 简单示例 |
---|---|---|---|
文本类型 | str | 存储 Unicode 字符,支持丰富字符串操作 | msg = "你好,Python" |
数值类型 | int | 整数,大小无限制 | count = 100 |
float | 浮点数,基于 IEEE 754 标准 | price = 9.9 | |
complex | 复数(实部 + 虚部,用j 标识虚部) | z = 3 + 4j | |
序列类型 | list | 可变、有序序列,可动态增删改元素 | nums = [1, 2, 3] |
tuple | 不可变、有序序列,性能更优 | coords = (10, 20) | |
range | 生成整数范围序列,节省内存 | for i in range(5): (生成 0-4) | |
映射类型 | dict | 无序键值对集合,键唯一且需不可变 | user = {"name": "Alice"} |
集合类型 | set | 可变、无序集合,元素唯一,支持集合运算 | s = {1, 2, 3} |
frozenset | 不可变、无序集合,可作为字典键 | fs = frozenset({1, 2}) | |
布尔类型 | bool | 只有True /False ,本质是int 子类 | is_ok = True |
二进制类型 | bytes | 不可变字节序列(元素 0-255) | b = b'hello' |
bytearray | 可变字节序列,可修改 | ba = bytearray(b'hello') | |
memoryview | 内存视图,高效访问其他二进制对象内存 | mv = memoryview(b'hello') |
1.获取数据类型
使用 type() 函数获取任何对象的数据类型
2.设定指定的数据类型
三.常见的数据类型介绍
1.数字类型
整型(int)、浮点型(float)、复数型(complex)以及随机型(random)
2.字符串类型
字符串方法分类表
分类 | 方法 | 描述 | 示例 | 结果 |
---|---|---|---|---|
大小写转换 | upper() | 转换为大写 | "hello".upper() | "HELLO" |
lower() | 转换为小写 | "WORLD".lower() | "world" | |
capitalize() | 首字母大写,其余小写 | "hello WORLD".capitalize() | "Hello world" | |
title() | 每个单词首字母大写 | "hello world".title() | "Hello World" | |
swapcase() | 大小写互换 | "Hello".swapcase() | "hELLO" | |
查找替换 | count(sub[, start[, end]]) | 统计子串出现次数 | "ababab".count("ab") | 3 |
find(sub[, start[, end]]) | 查找子串首次出现位置(失败返回 -1) | "hello".find("ll") | 2 | |
rfind(sub[, start[, end]]) | 从右侧查找子串首次出现位置 | "hello".rfind("l") | 3 | |
index(sub[, start[, end]]) | 同 find,但失败时抛出 ValueError | "hello".index("ll") | 2 | |
replace(old, new[, count]) | 替换子串 | "hello".replace("l", "L", 1) | "heLlo" | |
startswith(prefix) | 判断是否以指定前缀开头 | "hello".startswith("he") | True | |
endswith(suffix) | 判断是否以指定后缀结尾 | "hello".endswith("lo") | True | |
格式化 | format(*args, **kwargs) | 格式化字符串(新风格) | "Hello, {}!".format("Alice") | "Hello, Alice!" |
format_map(mapping) | 使用映射对象格式化 | "{name} is {age}".format_map({"name": "Bob", "age": 25}) | "Bob is 25" | |
join(iterable) | 将可迭代对象用指定字符串连接 | "-".join(["a", "b", "c"]) | "a-b-c" | |
center(width[, fillchar]) | 居中对齐,填充字符 | "hello".center(9, '*') | "hello" | |
ljust(width[, fillchar]) | 左对齐,填充字符 | "hello".ljust(9, '*') | "hello****" | |
rjust(width[, fillchar]) | 右对齐,填充字符 | "hello".rjust(9, '*') | "****hello" | |
zfill(width) | 左侧补零到指定宽度 | "42".zfill(5) | "00042" | |
修剪分割 | strip([chars]) | 去除字符串两侧指定字符(默认空格) | " hello ".strip() | "hello" |
lstrip([chars]) | 去除左侧指定字符 | "**hello".lstrip("") | "hello" | |
rstrip([chars]) | 去除右侧指定字符 | "hello***".rstrip("*") | "hello" | |
split(sep=None, maxsplit=-1) | 按分隔符分割字符串成列表 | "a,b,c".split(",") | ["a", "b", "c"] | |
rsplit(sep=None, maxsplit=-1) | 从右侧开始分割字符串 | "a,b,c".rsplit(",", 1) | ["a,b", "c"] | |
splitlines([keepends]) | 按行分割字符串 | "a\nb\nc".splitlines() | ["a", "b", "c"] | |
partition(sep) | 按分隔符将字符串分成三部分 | "hello".partition("l") | ("he", "l", "lo") | |
rpartition(sep) | 从右侧开始按分隔符分割 | "hello".rpartition("l") | ("hel", "l", "o") | |
判断检查 | isalpha() | 是否全是字母 | "abc".isalpha() | True |
isdigit() | 是否全是数字 | "123".isdigit() | True | |
isalnum() | 是否全是字母或数字 | "abc123".isalnum() | True | |
isspace() | 是否全是空白字符 | " ".isspace() | True | |
isupper() | 是否全是大写字母 | "HELLO".isupper() | True | |
islower() | 是否全是小写字母 | "hello".islower() | True | |
istitle() | 是否符合标题格式(首字母大写) | "Hello World".istitle() | True | |
in 操作符 | 子串是否存在 | "a" in "abc" | True | |
编码解码 | encode(encoding='utf-8') | 字符串编码为字节 | "你好".encode('utf-8') | b'\xe4\xbd\xa0\xe5\xa5\xbd' |
decode(encoding='utf-8') | 字节解码为字符串 | b'\xe4\xbd\xa0\xe5\xa5\xbd'.decode('utf-8') | "你好" | |
其他 | maketrans(x[, y[, z]]) | 创建字符映射转换表 | table = str.maketrans("abc", "123") | - |
translate(table) | 根据转换表替换字符 | "abc".translate(table) | "123" | |
expandtabs(tabsize=8) | 将制表符 \t 转换为空格 | "a\tb".expandtabs(4) | "a b" |
表格说明:表格按功能分类展示 Python 字符串方法,包含方法名称、描述、示例及结果。分类包括大小写转换、查找替换、格式化、修剪分割、判断检查、编码解码等。
字符串常见的几种用法
3.布尔类型和运算符
布尔类型
布尔表示两值之一:True 或 False。
bool 类型只有两个取值,分别是 True(表示真)和 False(表示假), 首字母必须大写,否则 Python 会将其当作变量而不是布尔值。
Python 中转换为 False
的值类型表格
类型 | 示例值 | 说明 |
---|---|---|
数值类型 | 0 | 整数零 |
0.0 | 浮点数零 | |
0j | 复数零 | |
字符串类型 | "" 或 '' | 空字符串 |
容器类型 | [] | 空列表 |
() | 空元组 | |
set() | 空集合 | |
{} | 空字典 | |
特殊常量 | None | 表示空值或无 |
自定义类型 | 未定义 __bool__() | 若类未定义 __bool__() 方法且 __len__() 返回 0 ,实例转换为 False |
运算符(七种)
算术运算符
用于数值的加减乘除等基本运算,操作数一般为数值类型(int
、float
等)。
运算符 | 描述 | 示例 | 结果 |
---|---|---|---|
+ | 加法 | 3 + 5 | 8 |
- | 减法 | 10 - 4 | 6 |
* | 乘法 | 3 * 6 | 18 |
/ | 除法(结果为浮点数) | 7 / 2 | 3.5 |
// | 整除(结果取整数部分) | 7 // 2 | 3 |
% | 取模(求余数) | 7 % 2 | 1 |
** | 幂运算 | 2 ** 3 | 8 |
比较运算符
用于比较两个值的大小或是否相等,结果返回布尔值(True
或 False
),操作数可以是数值、字符串等可比较的类型。
运算符 | 描述 | 示例 | 结果 |
---|---|---|---|
== | 等于 | 5 == 5 | True |
!= | 不等于 | 5 != 3 | True |
> | 大于 | 6 > 3 | True |
< | 小于 | 2 < 5 | True |
>= | 大于等于 | 4 >= 4 | True |
<= | 小于等于 | 3 <= 5 | True |
赋值运算符
用于给变量赋值,也可结合算术运算符实现复合赋值。
运算符 | 描述 | 示例 | 等价写法 |
---|---|---|---|
= | 基本赋值 | x = 10 | — |
+= | 加法赋值 | x += 5 | x = x + 5 |
-= | 减法赋值 | x -= 3 | x = x - 3 |
*= | 乘法赋值 | x *= 2 | x = x * 2 |
/= | 除法赋值(浮点数) | x /= 2 | x = x / 2 |
//= | 整除赋值 | x //= 2 | x = x // 2 |
%= | 取模赋值 | x %= 3 | x = x % 3 |
**= | 幂运算赋值 | x **= 2 | x = x ** 2 |
逻辑运算符
用于逻辑判断,操作数一般为布尔值,结果也为布尔值。
运算符 | 描述 | 示例 | 结果 | 逻辑规则(a 、b 为布尔值) |
---|---|---|---|---|
and | 逻辑与 | True and False | False | 都为 True 才返回 True ,否则 False |
or | 逻辑或 | True or False | True | 只要有一个 True 就返回 True |
not | 逻辑非 | not True | False | 取反(True 变 False ,反之亦然) |
位运算符
用于对整数的二进制位进行操作,适用于底层数据处理。
运算符 | 描述 | 示例(a=60 ,b=13 ) | 结果(二进制/十进制) |
---|---|---|---|
& | 按位与(逐位 AND) | a & b → 0000 1100 | 12 |
| | 按位或(逐位 OR) | a | b → 0011 1101 | 61 |
^ | 按位异或(逐位 XOR) | a ^ b → 0011 0001 | 49 |
~ | 按位取反 | ~a → 1100 0011 (补码表示) | -61 |
<< | 左移(低位补 0) | a << 2 → 1111 0000 | 240 |
>> | 右移(高位补符号位) | a >> 2 → 0000 1111 | 15 |
成员运算符
用于判断序列(如列表、字符串等)中是否包含某个元素。
运算符 | 描述 | 示例 | 结果 |
---|---|---|---|
in | 元素是否在序列中 | 'a' in 'abc' | True |
not in | 元素是否不在序列中 | 'd' not in 'abc' | True |
身份运算符
用于判断两个变量是否引用同一对象(内存地址相同)。
运算符 | 描述 | 示例 | 结果 | 说明 |
---|---|---|---|---|
is | 是否是同一对象 | a = [1,2]; b = a; a is b | True | a 和 b 指向同一列表对象 |
is not | 是否不是同一对象 | a = [1,2]; b = [1,2]; a is not b | True | a 和 b 是内容相同的不同对象 |
四.Python四种集合数据类型
以下是Python中常见数据类型的特性对比表格:
数据类型对比表
数据类型 | 有序性 | 可变性 | 允许重复元素 | 索引方式 | 定义示例 |
---|---|---|---|---|---|
列表 | ✅ | ✅ | ✅ | 位置索引(如[0]) | my_list = [1, 2, 3] |
元组 | ✅ | ❌ | ✅ | 位置索引(如(0)) | my_tuple = (1, 2, 3) |
集合 | ❌ | ✅ | ❌ | 无索引 | my_set = {1, 2, 3} |
字典 | ✅* | ✅ | ❌(键) | 键索引(如['a']) | my_dict = {'a': 1, 'b': 2} |
*注:Python 3.7及以上版本中字典保持插入顺序,因此可视为有序。
1.列表list
列表是一个有序且可更改的集合。在 Python 中,列表用方括号编写。
基础
进阶
列表方法表格
方法名 | 描述 | 示例 |
---|---|---|
append(x) | 在列表末尾添加元素 x | lst = [1, 2]; lst.append(3) → [1, 2, 3] |
extend(iter) | 将可迭代对象 iter 的所有元素添加到列表末尾 | lst = [1, 2]; lst.extend([3, 4]) → [1, 2, 3, 4] |
insert(i, x) | 在索引 i 处插入元素 x | lst = [1, 3]; lst.insert(1, 2) → [1, 2, 3] |
remove(x) | 删除列表中第一个值为 x 的元素,若不存在则报错 | lst = [1, 2, 2]; lst.remove(2) → [1, 2] |
pop([i]) | 删除并返回索引 i 的元素(默认最后一个) | lst = [1, 2, 3]; lst.pop(1) → 2 (列表变为 [1, 3] ) |
clear() | 移除列表所有元素 | lst = [1, 2]; lst.clear() → [] |
index(x) | 返回第一个值为 x 的元素的索引,若不存在则报错 | lst = [10, 20, 30]; lst.index(20) → 1 |
count(x) | 统计元素 x 在列表中出现的次数 | lst = [1, 2, 2, 3]; lst.count(2) → 2 |
sort() | 对列表进行排序(可指定 key 和 reverse 参数) | lst = [3, 1, 2]; lst.sort() → [1, 2, 3] |
reverse() | 反转列表元素的顺序 | lst = [1, 2, 3]; lst.reverse() → [3, 2, 1] |
copy() | 返回列表的浅拷贝 | lst = [1, 2]; new_lst = lst.copy() (new_lst 为 [1, 2] ) |
注意事项
- 部分方法(如
sort
、reverse
)直接修改原列表,无返回值。 - 使用
pop
或remove
时需注意索引或元素是否存在,否则会引发IndexError
或ValueError
。 copy()
仅生成浅拷贝,嵌套结构需使用deepcopy
实现完全独立复制。
2.元组tuple
元组是有序且不可更改的集合。在 Python 中,元组是用圆括号编写的。
创建一个元素的元组,元素后面必须有逗号,不然不能识别为元组。
以下是 Python 元组(tuple)常用方法的表格总结:
方法名 | 描述 | 示例 |
---|---|---|
count(value) | 返回元组中指定值出现的次数 | (1,2,2).count(2) → 2 |
index(value) | 返回指定值首次出现的索引,未找到则抛出 ValueError | (1,2,3).index(3) → 2 |
注意:元组为不可变序列,因此无添加/删除元素的方法。如需修改需转换为列表后再转回元组,或者两元组相加得到新的元组。
3.集合set
集合是无序和无索引的集合。在 Python 中,集合用花括号编写。
集合方法总结
功能分类 | 方法 | 描述 | 示例 | 返回值 |
---|---|---|---|---|
元素添加 | add(element) | 添加单个元素(存在则忽略)。 | s.add(10) | None |
update(iterable) | 添加多个元素(可接受列表、元组等)。 | s.update([20, 30]) | None | |
元素删除 | remove(element) | 删除指定元素(不存在则抛 KeyError )。 | s.remove(10) | None |
discard(element) | 删除指定元素(不存在不报错)。 | s.discard(10) | None | |
pop() | 随机删除并返回一个元素(集合无序,不可预测)。 | popped = s.pop() | 被删除的元素 | |
clear() | 清空集合所有元素。 | s.clear() | None | |
集合运算 | union(*others) | 并集:返回所有集合的元素(去重)。 | s.union(s1, s2) 或 s | s1 | s2 | 新集合 |
intersection(*others) | 交集:返回所有集合的共同元素。 | s.intersection(s1, s2) 或 s & s1 & s2 | 新集合 | |
difference(*others) | 差集:返回只在原集合中的元素。 | s.difference(s1) 或 s - s1 | 新集合 | |
symmetric_difference(other) | 对称差集:返回只在其中一个集合中的元素。 | s.symmetric_difference(s1) 或 s ^ s1 | 新集合 | |
关系判断 | issubset(other) | 判断是否为子集(所有元素都在 other 中)。 | s.issubset(s1) 或 s <= s1 | bool |
issuperset(other) | 判断是否为超集(包含 other 的所有元素)。 | s.issuperset(s1) 或 s >= s1 | bool | |
isdisjoint(other) | 判断是否无交集(无共同元素)。 | s.isdisjoint(s1) | bool | |
其他操作 | len(set) | 返回集合元素个数。 | len(s) | 整数 |
in | 判断元素是否在集合中。 | 10 in s | bool | |
copy() | 复制集合(浅拷贝)。 | s_copy = s.copy() | 新集合 |
4.字典dictionary
字典是一个无序、可变和有索引的集合。在 Python 中,字典用花括号编写,拥有键和值。
基础
进阶
嵌套字典
Python字典方法速查表
方法或操作 | 功能描述 | 示例 | 返回值类型 |
---|---|---|---|
访问元素 | |||
get(key[, default]) | 获取键对应的值,不存在时返回默认值 | my_dict.get("name", "未知") | 值或默认值 |
items() | 返回键值对视图 (key, value) | my_dict.items() | 视图对象 |
keys() | 返回键视图 | my_dict.keys() | 视图对象 |
values() | 返回值视图 | my_dict.values() | 视图对象 |
修改字典 | |||
update(other) | 用其他字典更新(存在则覆盖,不存在则添加) | my_dict.update({"age": 30}) | None |
setdefault(key, default) | 键存在返回值,不存在则插入并设默认值 | my_dict.setdefault("city", "北京") | 值或默认值 |
pop(key[, default]) | 删除键并返回值,不存在返回默认值或抛异常 | my_dict.pop("name", "未知") | 值或默认值 |
popitem() | 删除并返回最后插入的键值对(Python 3.7+有序) | my_dict.popitem() | (key, value) 元组 |
clear() | 清空字典 | my_dict.clear() | None |
判断与其他 | |||
in | 判断键是否存在 | "name" in my_dict | bool |
copy() | 返回浅拷贝 | new_dict = my_dict.copy() | 新字典 |
fromkeys(iterable, value) | 创建新字典,键来自可迭代对象,值统一设置 | dict.fromkeys(["a", "b"], 0) | 新字典 |
表格特点:
- 按功能分类(访问、修改、判断)
- 包含方法签名、功能说明、示例和返回值
- 关键操作如
popitem()
标注了版本依赖 - 默认值参数用
[]
标注表示可选
五.Python语法
逻辑运算符表
运算符名称 | Python 语法 | 数学符号 | 示例(True 情况) |
---|---|---|---|
等于 | a == b | = | 5 == 5 |
不等于 | a != b | ≠ | 3 != 5 |
小于 | a < b | < | 2 < 5 |
小于等于 | a <= b | ≤ | 4 <= 4 |
大于 | a > b | > | 6 > 3 |
大于等于 | a >= b | ≥ | 7 >= 7 |