课程0基础Agent开发课 / Python基础 / Python快速入门-零基础版
— 13 min read

Python快速入门-零基础版

> **本文适合谁**:从来没写过 Python 的人。读完这篇,你能看懂 Python 代码,能写出可以运行的 AI 小程序,能继续学本章后面的内容。

Python 快速入门:零基础也能看懂

本文适合谁:从来没写过 Python 的人。读完这篇,你能看懂 Python 代码,能写出可以运行的 AI 小程序,能继续学本章后面的内容。

本文阅读时间:约20分钟

Java工程师:你可以读这篇,但更推荐先读附录《Java工程师转Python指南》,那篇专门讲Java和Python的思维差异,效率更高。


1.1 Python 是什么?为什么AI都用它?

Python 是一门编程语言,和 Java、C++、JavaScript 一样,是用来告诉计算机"做什么"的工具。

但 Python 有一个特点:写起来特别像说人话

Python

动态类型
Type Hints可选

解释执行
直接运行 .py

极简
print('你好') 即可

生态丰富
PyTorch/TF/LangChain

快(脚本风格)
适合快速验证

事实标准
99%的AI工具首选

Java

静态类型
编译期强制检查

编译后执行
java -> .class

冗长
必须有类和main方法

生态较少
DL4J / Weka

慢(编译、类型声明)
适合大型系统

非主流选择
企业后端为主

AI 开发选 Python 的核心原因:丰富的生态 + 简洁的语法 + 科学界长期积累

Python 与 Java 的核心差异对比——AI 开发为什么选 Python

同样是"打印'你好世界'",Java 要写:

java
public class Main {
    public static void main(String[] args) {
        System.out.println("你好世界");
    }
}

Python 只要写:

python
print("你好世界")

这就是 Python 流行的核心原因——极度简洁。科学家和研究人员不想花时间在繁琐的语法上,Python 让他们能快速验证想法。AI 领域的绝大多数工具(LangChain、PyTorch、Hugging Face)都是用 Python 写的,选择 AI 开发,就等于选择了 Python。


1.2 第一步:Python 的基本语法

1.2.1 变量:存东西的盒子

python
# 用 = 把值存进变量,不需要声明类型
name = "张三"        # 字符串(文字)
age = 25            # 整数
score = 98.5        # 小数
is_student = True   # 布尔值(True/False,注意首字母大写)

# 打印变量
print(name)         # 输出:张三
print(age)          # 输出:25

和其他语言的区别:Python 不需要声明变量类型,直接赋值就行。变量的类型由赋的值决定。

1.2.2 字符串:处理文字

python
greeting = "你好"
name = "世界"

# 拼接字符串(推荐用 f-string,最简洁)
message = f"{greeting}{name}!"
print(message)  # 输出:你好,世界!

# f-string 里可以放任何表达式
price = 9.9
print(f"价格是 {price:.2f} 元")  # 输出:价格是 9.90 元(.2f 保留两位小数)

# 字符串长度
print(len("Python"))  # 输出:6

1.2.3 列表:存一组东西

python
# 列表用方括号 [],可以存任意类型
fruits = ["苹果", "香蕉", "橙子"]

# 访问元素(从0开始数)
print(fruits[0])   # 苹果
print(fruits[-1])  # 橙子(-1 表示最后一个)

# 添加元素
fruits.append("葡萄")
print(fruits)  # ['苹果', '香蕉', '橙子', '葡萄']

# 列表长度
print(len(fruits))  # 4

# 遍历列表
for fruit in fruits:
    print(fruit)

1.2.4 字典:存键值对

字典就像一本通讯录——每个名字(键)对应一个电话号码(值)。

python
# 字典用花括号 {},键值对用冒号分隔
user = {
    "name": "张三",
    "age": 25,
    "city": "北京"
}

# 访问值
print(user["name"])          # 张三
print(user.get("age"))       # 25
print(user.get("email", "未填写"))  # 未填写(键不存在时返回默认值)

# 添加/修改
user["email"] = "zhangsan@example.com"

# 遍历
for key, value in user.items():
    print(f"{key}: {value}")

1.2.5 条件判断

python
score = 85

if score >= 90:
    print("优秀")
elif score >= 60:
    print("及格")
else:
    print("不及格")

# 注意:Python 用缩进(4个空格)表示代码块,不用花括号
# 缩进必须一致,混用空格和Tab会报错

1.2.6 循环

python
# for 循环:遍历列表
names = ["Alice", "Bob", "Charlie"]
for name in names:
    print(f"你好,{name}!")

# for 循环:数数
for i in range(5):      # range(5) 生成 0,1,2,3,4
    print(i)

# while 循环
count = 0
while count < 3:
    print(f"第 {count+1} 次")
    count += 1

1.3 第二步:函数——把代码打包复用

函数是把一段代码打包起来,可以反复调用的工具。

python
# 定义函数:def 函数名(参数):
def greet(name):
    message = f"你好,{name}!"
    return message  # return 返回结果

# 调用函数
result = greet("张三")
print(result)  # 你好,张三!

# 带默认参数的函数
def greet_with_title(name, title="同学"):
    return f"你好,{title}{name}!"

print(greet_with_title("张三"))          # 你好,同学张三!
print(greet_with_title("李四", "老师"))  # 你好,老师李四!

1.3.1 函数的类型注解(推荐加上)

python
# 在参数和返回值上标注类型,让代码更清晰
def add(a: int, b: int) -> int:
    return a + b

def get_user_info(user_id: str) -> dict:
    return {"id": user_id, "name": "张三"}

类型注解不是强制的,但加上之后 IDE 能给出更好的代码提示,也让别人更容易读懂你的代码。


1.4 第三步:Python 的特色语法

1.4.1 列表推导式:一行搞定循环

python
# 普通写法
squares = []
for x in range(5):
    squares.append(x ** 2)

# 列表推导式(Python 特色,更简洁)
squares = [x ** 2 for x in range(5)]
print(squares)  # [0, 1, 4, 9, 16]

# 带条件的推导式
even_squares = [x ** 2 for x in range(10) if x % 2 == 0]
print(even_squares)  # [0, 4, 16, 36, 64]

1.4.2 解包赋值:同时赋多个变量

python
# 同时赋值
x, y = 10, 20
print(x, y)  # 10 20

# 函数返回多个值
def get_min_max(numbers):
    return min(numbers), max(numbers)

low, high = get_min_max([3, 1, 4, 1, 5, 9, 2, 6])
print(f"最小值: {low}, 最大值: {high}")  # 最小值: 1, 最大值: 9

1.4.3 缩进是语法,不是排版

Python 用缩进(通常4个空格)来表示代码块,这和大多数语言用花括号不同:

python
# ✅ 正确:缩进一致
def check_age(age):
    if age >= 18:
        print("成年人")
    else:
        print("未成年人")

# ❌ 错误:缩进不一致,会报 IndentationError
def bad_function():
  x = 1
    y = 2  # 报错!

1.5 第四步:错误处理

python
# try/except 捕获错误
def divide(a, b):
    try:
        result = a / b
        return result
    except ZeroDivisionError:
        print("错误:不能除以零!")
        return None
    except Exception as e:
        print(f"发生了未知错误:{e}")
        return None

print(divide(10, 2))   # 5.0
print(divide(10, 0))   # 错误:不能除以零!

1.6 第五步:运行你的第一个 AI 程序

光看语法太枯燥,现在来写一个真正能用的 AI 程序——调用大模型 API,让它回答问题。

1.6.1 安装工具

bash
# 安装 uv(Python 项目管理工具,比 pip 快10倍)
curl -LsSf https://astral.sh/uv/install.sh | sh

# 创建第一个项目
uv init my-first-ai
cd my-first-ai

# 安装 openai 库(用于调用大模型 API)
uv add openai

1.6.2 写代码

新建文件 main.py,写入:

python
# main.py
# 这个程序:调用大模型API,问它一个问题,打印回答

import os
from openai import OpenAI

# 创建客户端(会自动从环境变量读取 API Key)
client = OpenAI(
    base_url="https://api.deepseek.com",   # 使用 DeepSeek(国内可直连)
    api_key=os.environ.get("DEEPSEEK_API_KEY")
)

def ask(question: str) -> str:
    """向大模型提问,返回回答。"""
    response = client.chat.completions.create(
        model="deepseek-chat",
        messages=[
            {"role": "user", "content": question}
        ]
    )
    # response.choices[0].message.content 是模型的回答文字
    return response.choices[0].message.content

# 运行
answer = ask("Python 有什么优点?用三句话回答。")
print(f"模型回答:\n{answer}")

1.6.3 运行

bash
# 设置 API Key(替换成你自己的)
export DEEPSEEK_API_KEY="你的API Key"

# 运行程序
uv run python main.py

预期输出(类似):

code
模型回答:
1. 语法简洁易读,学习曲线平缓,适合快速开发和原型验证。
2. 拥有丰富的第三方库生态,尤其在AI和数据科学领域几乎无可替代。
3. 跨平台支持良好,代码可在 Windows、Mac、Linux 上无缝运行。

这 20 行代码就是所有 AI 应用的骨架。后续的 RAG、Agent、工具调用,都是在这个基础上扩展的。

python
# ⚠️ 生产环境建议补充错误处理:
# import time, openai, logging
# logger = logging.getLogger(__name__)
#
# def ask(question: str) -> str:
#     try:
#         response = client.chat.completions.create(
#             model="deepseek-chat",
#             messages=[{"role": "user", "content": question}]
#         )
#         return response.choices[0].message.content
#     except openai.RateLimitError:
#         time.sleep(60)  # 限流,等待后重试
#         raise
#     except openai.APITimeoutError:
#         raise  # 超时,向上抛出
#     except Exception as e:
#         logger.error(f"LLM调用失败: {e}")
#         raise

1.7 第六步:虚拟环境——必须搞清楚的基础

Python 的包默认是全局安装的,不同项目依赖同一个包的不同版本会产生冲突。虚拟环境为每个项目创建独立的包目录,项目之间互不干扰。

bash
# 推荐:用 uv 管理(速度快,功能全)
uv init my-project       # 创建项目(自动创建虚拟环境)
uv add requests pydantic # 安装包
uv run python main.py    # 在虚拟环境中运行

# 也可以用 Python 内置的 venv
python -m venv .venv
source .venv/bin/activate    # Mac/Linux
.venv\Scripts\activate       # Windows
pip install requests

规则:每个项目都要有自己的虚拟环境。这是 Python 工程化的第一条规则。


1.8 常见错误和解决方法

错误 原因 解决方法
IndentationError 缩进不一致(空格和Tab混用) 统一用4个空格,用Black格式化工具
NameError: name 'x' is not defined 变量未定义就使用 检查变量名拼写,确认已赋值
KeyError: 'xxx' 字典里没有这个键 dict.get(key, 默认值) 代替 dict[key]
ModuleNotFoundError 包没安装 运行 uv add 包名 安装
SyntaxError 语法错误 检查冒号、括号、缩进是否正确

1.9 小结

概念 一句话 例子
变量 存数据的盒子,不需要声明类型 name = "张三"
列表 有序的数据集合 [1, 2, 3]
字典 键值对集合,像通讯录 {"name": "张三"}
函数 打包复用的代码块 def greet(name):
f-string 最推荐的字符串格式化方式 f"你好,{name}"
缩进 Python 的代码块标志,必须一致 4个空格
虚拟环境 每个项目独立的包目录 uv init
类型注解 可选的类型标注,让代码更清晰 def f(x: int) -> str:

下一步:去第02篇《包管理与项目结构》,学会用 uv 管理一个真正的 AI 项目。

Java工程师:读完这篇后,建议去读附录《Java工程师转Python指南》,里面有大量 Java vs Python 的对比,帮你快速建立迁移思维。

本页目录