Java转Python|今日Python基础+Agent项目实战学习总结
今天主要在用 Python 手写简易 ReAct 智能体项目,过程中补齐了很多 Python 和 Java 的差异知识点,都是实际开发里的基础高频用法,在这里统一总结记录一下。
1. Python 实例化对象语法
Java 创建对象需要 new,Python 直接 类名() 就能实例化。
Python:
executor = ToolExecutor()
等价 Java:
ToolExecutor executor = new ToolExecutor();
Python 变量不需要提前声明类型,解释器自动识别,写法更简洁。
2. 包机制:__init__.py 的作用
Java 的文件夹默认就是包,Python 必须依靠 __init__.py 来标识当前文件夹是一个可导入的 Python 包。
主要作用:
-
标识文件夹为可导入模块,避免 ModuleNotFound 报错
-
统一对外暴露类、函数,简化外部导入写法
-
包加载时自动执行内部代码,类似 Java 静态代码块
-
屏蔽内部私有代码,控制对外接口
实际项目里最大的用处就是:统一管理导入,不用每次写超长导入路径,结构更规范。
3. Python 模块和类的区别(踩坑重点)
这是今天最大的踩坑点,也是 Java 和 Python 最大的差异之一。
-
xxx.py 文件本身是一个 模块(module),不能直接加括号调用
-
文件内部的 class 或 def 函数,才是可实例化、可调用的对象
错误写法(导入模块):
from util import search
search() # 报错:module not callable
正确写法(导入模块里的函数):
from util.search import search
search()
简单理解:Java 文件=类,Python 文件=容器,类和函数是容器里的内容。
4. Python 函数多返回值和解包
Python 函数支持返回多个值,本质是自动封装成元组,括号可以省略。
def test():
return 1, 2
a, b = test()
重点:只按顺序赋值,完全不看变量名。
和 Java 不同,Java 没有多返回值,只能通过实体类、Pair 封装返回。Python 这种写法在解析、工具返回场景非常轻便。
5. 字符串 format 模板渲染
format 是 Python 的字符串占位填充方法,支持命名占位符,比 Java 的 String.format 更友好。
template = "工具:{tools},问题:{question}"
res = template.format(tools="搜索", question="华为手机")
优势:可以不按顺序传参,可读性极高,非常适合写大模型 Prompt 模板。
同时了解了转义规则:模板中需要保留原生 {} 时,需要写双层 {{}}。
6. PyCharm 常用代码快捷键
-
Tab:批量向右缩进
-
Shift + Tab:批量向左回缩
-
Ctrl + Alt + L:全局代码格式化
7. 项目实战理解:ToolExecutor 工具调度器
在本次 ReAct 智能体项目中,ToolExecutor 是工具管理中枢,作用是统一注册、管理、调用所有外部工具。
流程:
-
实例化工具执行器
-
注册工具名、描述、执行函数
-
根据 LLM 输出的工具名,自动调度对应函数执行
这是 AI 智能体工具调用的标准设计模式。
8. 环境变量加载问题
Python 不会自动读取项目根目录的 .env 文件,必须依赖 python-dotenv 手动加载,且需要手动定位根目录路径,否则子包读取不到环境变量。
总结
今天主要是从 Java 思维切换到 Python 工程思维,解决了模块导入、对象实例化、多返回值、模板字符串的核心差异,同时手写了完整的 ReAct 智能体工具调用流程,补齐了 Python 做 AI 项目的基础工程认知。
浙公网安备 33010602011771号