python+AI
2026.3: python + AI 未来三年学习规划(暂)
python编程和工程基础
python的特点
Python仅包含33个关键字、7种核心数据类型,语法规则简洁直观,接近自然语言。
同样的功能实现,Python代码量仅为Java的1/5,C++的1/10,极大降低了入门门槛。
Python还拥有庞大的标准库和第三方库生态:
- 数据处理:Numpy、Pandas
- 可视化:Matplotlib、Seaborn
- 机器学习:Scikit-learn、TensorFlow
- Web开发:Django、Flask
- 自动化:Selenium(不太好用哈哈哈哈)、PyAutoGUI
Python优缺点:
优点:
- 简洁性:代码可读性极高,专注解决问题而非语言本身。
- 开源免费:完全开源,可自由修改、分发,社区活跃。
- 跨平台:可在Windows、Linux、MacOS等主流系统无缝运行。
- 全能型:覆盖全栈开发、数据分析、人工智能等多个领域。
- 胶水语言:可轻松与C/C++、Java、Go等语言混合开发。
缺点:
- 执行效率较低(解释型语言特性),但可通过C拓展、JIT编译(PyPy)优化。
- 多线程GIL限制,高并发场景需结合多进程或异步编程。
Python解释器
Python是高级编程语言,无法直接被计算机执行,需通过解释器将代码转换为机器语言(01二进制代码),常见解释器类型:
- CPython:官方默认版本,C语言开发,应用最广泛。
- IPython:交互式解释器,增强了CPython的交互体验。
- PyPy:JIT编译型解释器,执行效率远超CPython。
- Jython/IronPython:分别运行在Java/.NET平台的解释器。
环境推荐
python版本选择
推荐3.12版本,改版本相对稳定,也可兼容新的深度学习库。
Anaconda
Anaconda:“全家桶”,包含Conda+Python+1500+数据科学库+图形化工具(体积约500MB-1GB)
安装步骤(Mac OS系统):
进入官网 --> 点击Free DownLoad --> 找到DownLoad Now,点击Skip registration --> 选择Mac,下载Graphical Installer图形化安装器
点开安装包,一路点同意就行了。。。
Pycharm
https://www.jetbrains.com/pycharm/
下载安装包 --> 一路点同意就行
创建项目
使用anaconda的基础环境创建项目。
基础环境(base)的Python路径通常为Anaconda3\python.exe(Windows)或/opt/anaconda3/bin/python(Linux/macOS)。
基础概念
变量
变量名 = 变量值
变量值:
- 数值(小数或整数)
- 字符串(用''或""括起来的内容叫做字符串)
- 布尔值(True,False)类型为bool(布尔类型)
变量名命名
强制规则
- 仅能包含字母、数字、下划线。
- 不能以数字开头。
- 严格区分大小写。
- 不能使用Python关键字
推荐规范
- 命名通俗易通。
- 多个单词命名:
- 小驼峰:userName(第二个单词首字母大写)
- 下划线:user_name(Python官方风格)
- 大驼峰:UserName(类名专用)
变量值类型
| 类型 | 说明 | 示例 |
|---|---|---|
| 整数(int) | 无小数的数字 | age = 20 |
| 浮点数(float) | 带小数的数字 | price = 19.9 |
| 字符串(str) | 文本内容(单/双引号包裹) | name = "Python" |
| 布尔值(bool) | 逻辑值(True/False) | is_ok = True |
| 列表(list) | 有序可变集合 | nums = [1, 2, 3] |
| 元组(tuple) | 有序不可变集合 | info = ("张三", 20) |
| 字典(dict) | 键值对集合 | student = {"name": "李四", "age": 19} |
集合(set)| 无序序列,不重复序列 | num_set = {1, 3, 5} |
判断变量类型
type(变量名),返回变量对应的具体类型。isinstance(变量名,类型),判断变量名是否和类型匹配,如果匹配返回True,否则返回False。
输入与输出
(1)格式化输出
方法1:f-string(Python里最推荐、最简洁的字符串格式化方式!)
name = "李四"
age = 20
score = 95.5
# 基础用法
print(f"姓名:{name},年龄:{age},成绩:{score}")
# 格式控制(保留2位小数)
print(f"成绩:{score:.2f}")
# 数字补零(6位宽度)
print(f"学号:{1:06d}") # 输出:000001方法2:format()方法
print("姓名:{},年龄:{}".format(name, age))
# 指定位置
print("年龄:{1},姓名:{0}".format(name, age))
# 格式控制
print("成绩:{:.2f}".format(score))方法3:%占位符print("姓名:%s,年龄:%d,成绩:%.2f" % (name, age, score))
(2)转义字符
| 转义符 | 功能 |
|---|---|
\n | 换行 |
\t | 制表符(4个空格) |
\\ | 反斜杠本身 |
\" | 双引号 |
\' | 单引号 |
(3)输入函数input()
# 基础用法
name = input("请输入您的姓名:")
age = input("请输入您的年龄:")
print(f"您输入的姓名:{name},年龄:{age}")
# 带提示的输入
phone = input("请输入您的手机号:")
print(f"手机号:{phone},类型:{type(phone)}")数据转换
当需要对输入的字符串进行数值运算时,需进行类型转换:
| 函数 | 功能 | 示例 |
|---|---|---|
| int(x) | 转换为整数 | int("100") → 100 |
| float(x) | 转换为浮点数 | float("9.9") → 9.9 |
| str(x) | 转换为字符串 | str(18) → "18" |
| eval(x) | 执行字符串表达式 | eval("1+2") → 3 |
eval()还可以这样用eval("[1,2,3]") -> [1,2,3]
运算符
(1)算术运算符
| 运算符 | 描述 | 示例 | 计算结果 |
|---|---|---|---|
| + | 加法 | 10 + 20 | 30 |
| - | 减法 | 20 - 10 | 10 |
| ***** | 乘法 | 10 * 20 | 200 |
| / | 除法(返回浮点数) | 20 / 10 | 2.0 |
| // | 整除(向下取整) | 21 // 10 | 2 |
| % | 取模(返回余数) | 21 % 10 | 1 |
| ****** | 幂运算 | 2 ** 3 | 8 |
(2)赋值运算符
| 运算符 | 描述 | 示例 (假设原始 x=10) |
|---|---|---|
| = | 基础赋值 | x = 10 |
| += | 加后赋值 | x += 5 → x = x + 5 |
| -= | 减后赋值 | x -= 5 → x = x - 5 |
| *= | 乘后赋值 | x *= 5 → x = x * 5 |
| /= | 除后赋值 | x /= 5 → x = x / 5 |
| //= | 整除赋值 | x //= 5 → x = x // 5 |
| %= | 取模赋值 | x %= 5 → x = x % 5 |
| **= | 幂赋值 | x **= 5 → x = x ** 5 |
(3)比较运算符(返回布尔值)
| 运算符 | 描述 | 示例 |
|---|---|---|
== | 等于 | 10 == 10 → True |
!= | 不等于 | 10 != 20 → True |
> | 大于 | 20 > 10 → True |
< | 小于 | 10 < 20 → True |
>= | 大于等于 | 20 >= 10 → True |
<= | 小于等于 | 10 <= 20 → True |
(4)逻辑运算符
| 运算符 | 描述 | 示例 |
|---|---|---|
and | 逻辑与(都真才真) | (10>5) and (20>10) → True |
or | 逻辑或(有真就真) | (10>5) or (20<10) → True |
not | 逻辑非(取反) | not (10>5) → False |
条件判断
(1)核心作用
根据条件表达式的布尔结果(True/False),执行不同的代码块,实现程序的分支逻辑,是程序实现 “判断” 能力的核心语法。
(2)基本语法规则
- Python 中用 缩进(4 个空格 / 制表符) 划分代码块,而非大括号,缩进必须统一
- 条件表达式后必须加冒号 :
- 条件表达式可结合比较运算符、逻辑运算符组合使用
示例:
# 示例:判断是否为工作日的工作时间
hour = int(input("请输入当前小时数(0-23):"))
weekday = input("请输入是否为工作日(是/否):")
if weekday == "是" and 9 <= hour <= 18:
print("当前是工作时间,请专注工作")
else:
print("当前是非工作时间,可休息")# 示例:判断成年与否
age = 20
result = "成年" if age >= 18 else "未成年"
print(f"你是:{result}")
# 等价于原双分支代码
if age >= 18:
result = "成年"
else:
result = "未成年"循环
程序是为了解决实际问题的,实际问题中存在着重复动作,那么程序中也应该有相应的描述,这就是循环。
在Python中,循环一共分为两大类:while循环与for循环
①:对于循环次数固定的(已知)情况下,建议使用for循环, 例如: 打印1~10的数字。
②:对于循环次数未知(不确定)的情况下,建议使用while循环, 例如: 猜数字游戏
while循环
如果你想要循环n次,并计数,示例如下:
i = 0
n = 50
while i < n:
# 执行循环的主体代码
# balabala
i += 1
print(f'i = {i}') # i = n与C++一样有break和continue
for循环
for循环结构主要用于(序列 => 字符串、列表、元组、集合以及字典)类型数据的遍历(循环)操作,无需手动定义和更新计数器,使用起来更简洁。
遍历字符串
# 需求: 遍历一个字符串 : python
for char in "python":
print(char)for循环功能非常强大,可以自动判断序列的长度,长度为多少,则for循环就循环多少次。每次循环时,系统会自动将序列中的每个元素赋值给临时变量,赋值完成后,for循环内部会自动更新计数器,向后移动一位,继续循环,直至元素全部循环结束。
range函数range(stop)和range(start, stop, step)
# 需求: 生成4以内的序列, 并且将每一个值打印出来
for num in range(0,4):
print(num)AI数学与数据科学基础
深度学习基础
NLP自然语言处理
大模型AIGC与企业级NLP
AI工程化与上线
项目应用
认知概念
学过的一大堆知识,如何用口语表达,呃呃呃呃呃呃呃呃。。
python多线程问题图解
Python 多线程受 GIL(Global Interpreter Lock,全局解释器锁)限制,核心原因是 CPython 解释器为保证内存安全(尤其是引用计数),强制同一时刻只能有一个线程执行 Python 字节码,导致多核 CPU 无法被充分利用。
即:GIL使得同一时刻,只有一个线程能执行 Python 字节码
多线程问题图解:
C++,Java等一些编程语言多线程编译:
而Python实际是伪多线程,多线程启动后,每个线程都要竞争 GIL;
拿到锁才能跑 Python 代码,没拿到就阻塞。
解决方案1:分布式进程/多进程
每个进程有独立的 Python 解释器 + 独立的 GIL
解决方案2:协程
