Python 快速入门:Java 开发者版
目标:用一份文档完成 Python 基础语法迁移,并能写出小型命令行程序,具备学习LangChain等框架基础。
适合人群:具备java语言基础,想要快速掌握python的开发者。
0. 先用 Java 的思维理解 Python
Python 并不是"去掉分号的 Java"。它最重要的变化是:动态类型 + 缩进代码块 + 内置集合/迦代能力强 + 标准库丰富。
python
# 不需要声明变量类型,但对象本身仍有类型
user_name = "Alice"
age = 20
age = "unknown" # 语法允许,但业务代码中不要让同一变量承担不同类型
Python 同样是强类型语言;"1" + 1 会报错。只是类型检查主要在运行时进行。团队项目建议保留类型标注,获得接近 Java 的 IDE 提示和静态检查体验。
python
def add(a: int, b: int) -> int:
return a + b
1. 环境、运行与第一个程序
安装 Python 3 后,在终端确认:
powershell
python --version
python -c "print('Hello, Python')"
每个项目创建独立虚拟环境;它相当于 Maven/Gradle 项目隔离依赖的做法。
powershell
mkdir demo-python
cd demo-python
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install requests
创建 main.py:
python
name = input("你的名字:") # input 的返回值一定是 str
print(f"你好,{name}!")
运行:python main.py。
2. Java 与 Python 的核心语法对照
下面每条都可以单独复制并运行。
输出:print()
print() 对应 Java 的 System.out.println(),默认会在输出末尾换行。
python
message = "Hello, Python"
print(message)
输出:
text
Hello, Python
变量绑定:无需声明类型
Python 的变量名会绑定到对象,类型由当前绑定的值决定。
python
age = 18
print(age)
print(type(age).__name__)
输出:
text
18
int
空值:None
None 对应 Java 的 null;判断时使用 is None。
python
email = None
if email is None:
print("邮箱未填写")
输出:
text
邮箱未填写
相等比较:== 与 is
== 比较值是否相等,is 比较是否为同一个对象。对于 None,应使用 is。
python
first = [1, 2]
second = [1, 2]
missing = None
print(first == second)
print(first is second)
print(missing is None)
输出:
text
True
False
True
逻辑运算:and、or 与 not
Python 使用单词形式的逻辑运算符,而不是 &&、|| 和 !。
python
has_account = True
has_permission = False
print(has_account and has_permission)
print(has_account or has_permission)
print(not has_permission)
输出:
text
False
True
True
代码块:冒号加缩进
Python 使用冒号和缩进划分代码块,通常缩进 4 个空格。
python
score = 90
if score >= 60:
print("及格")
输出:
text
及格
条件表达式:a if condition else b
它对应 Java 的三元表达式 condition ? a : b,但 Python 的结果值写在条件两侧。
python
score = 95
level = "优秀" if score >= 90 else "合格"
print(level)
输出:
text
优秀
普通循环:range()
range(n) 生成从 0 到 n - 1 的整数,结束值不包含在内。
python
for index in range(3):
print(index)
输出:
text
0
1
2
列表:list
list 类似 Java 的 ArrayList,可通过 append() 追加元素。
python
languages = ["Java", "Python"]
languages.append("Go")
print(languages)
输出:
text
['Java', 'Python', 'Go']
映射:dict
dict 类似 Java 的 HashMap,用于按键保存和读取值。
python
user = {"name": "Alice", "age": 20}
print(user["name"])
print(user.get("email"))
输出:
text
Alice
None
抛出异常:raise
raise 对应 Java 的 throw。下面示例捕获异常,以便程序可以完整运行并展示结果。
python
try:
raise ValueError("输入不合法")
except ValueError as error:
print(f"捕获到异常:{error}")
输出:
text
捕获到异常:输入不合法
3. 基础类型、转换与格式化
常见类型:int、float、str、bool、None。Python 没有 Java 中独立的 char;'a' 和 "a" 都是字符串。
python
count = int("12") # 字符串转整数
price = float("19.9") # 字符串转浮点数
text = str(100) # 转字符串
print(type(count))
print(isinstance(count, int))
推荐 f-string,不必像 Java 的 String.format 那样写占位符:
python
name, score = "Alice", 95
print(f"{name} 的成绩是 {score},等级:{'优秀' if score >= 90 else '合格'}")
4. 流程控制:注意缩进
python
score = int(input("请输入成绩:"))
if score >= 90:
level = "优秀"
elif score >= 60:
level = "及格"
else:
level = "不及格"
print(level)
Python 支持 Java 没有的链式比较:
python
if 60 <= score < 90:
print("及格")
循环应优先遍历对象,而不是操作下标:
python
languages = ["Java", "Python", "Go"]
for language in languages:
print(language)
for index, language in enumerate(languages):
print(index, language)
for i in range(1, 10, 2): # 1, 3, 5, 7, 9
print(i)
break 结束整个循环,continue 跳过当前一次循环,语义与 Java 相同。
5. 四种必须掌握的集合
list:相当于 ArrayList
python
users = ["Alice", "Bob"]
users.append("Cindy") # 追加一个元素
users.extend(["David", "Eva"]) # 追加多个元素
users[0] = "Alex"
users.remove("Bob")
print(users[0]) # 索引从 0 开始
print(users[-1]) # 最后一个元素
print(users[1:3]) # 切片:左闭右开
dict:相当于 HashMap
python
user = {"name": "Alice", "age": 20}
user["city"] = "Shanghai" # 新增或修改
print(user["name"])
print(user.get("email")) # 不存在时返回 None,不抛 KeyError
for key, value in user.items():
print(f"{key} = {value}")
现代 Python 的 dict 保留插入顺序。判断键存在请写 "name" in user。
set:去重和成员判断
python
tags = {"java", "python", "java"}
tags.add("backend")
print("python" in tags)
tuple:不可变序列
python
point = (10, 20)
x, y = point # 解构赋值
当数据结构在创建后不应被改变时,使用 tuple;函数返回多个值本质上也常返回 tuple。
6. 函数:默认参数、命名参数与返回值
python
def greet(name: str, prefix: str = "你好") -> str:
"""生成一条问候语。"""
return f"{prefix},{name}"
print(greet("Alice"))
print(greet(name="Bob", prefix="Welcome"))
可变参数对应 Java 的 varargs:
python
def total(*numbers: int) -> int:
return sum(numbers)
def print_profile(**fields: str) -> None:
for key, value in fields.items():
print(f"{key}: {value}")
print(total(1, 2, 3))
print_profile(name="Alice", city="Shanghai")
一个重要陷阱:可变默认参数
python
# 不要这样写:该 list 会在多次调用之间被共享
def add_bad(item, items=[]):
items.append(item)
return items
# 正确做法
def add_item(item, items=None):
if items is None:
items = []
items.append(item)
return items
7. Python 风格的高效写法
列表推导式相当于"循环 + 判断 + 收集",但应保持简短可读:
python
numbers = [1, 2, 3, 4, 5]
even_squares = [n * n for n in numbers if n % 2 == 0]
print(even_squares) # [4, 16]
解构和交换变量不需要临时变量:
python
first, second = "A", "B"
first, second = second, first
8. 异常处理与文件读写
python
try:
age = int(input("年龄:"))
except ValueError:
print("年龄必须是整数")
else:
print(f"录入成功:{age}")
finally:
print("本次输入结束")
读写文件优先使用 with,它会自动关闭文件:
python
from pathlib import Path
path = Path("message.txt")
path.write_text("Hello Python", encoding="utf-8")
content = path.read_text(encoding="utf-8")
print(content)
9. 综合示例:命令行待办清单
这个例子同时用到了列表、字典、函数、循环、条件和输入输出。保存为 todo.py 后运行。
python
tasks: list[dict[str, object]] = []
def add_task(title: str) -> None:
tasks.append({"title": title, "done": False})
def show_tasks() -> None:
if not tasks:
print("暂无任务")
return
for index, task in enumerate(tasks, start=1):
status = "x" if task["done"] else " "
print(f"{index}. [{status}] {task['title']}")
while True:
command = input("\n1-新增 2-查看 3-完成 0-退出:").strip()
if command == "1":
title = input("任务名称:").strip()
if title:
add_task(title)
elif command == "2":
show_tasks()
elif command == "3":
show_tasks()
try:
index = int(input("完成第几项:")) - 1
tasks[index]["done"] = True
except (ValueError, IndexError):
print("序号无效")
elif command == "0":
break
else:
print("未知命令")
10. 从 Java 迁移时的检查清单
- 变量和函数使用
snake_case,类名使用PascalCase。 - 判断空值用
value is None,不要用value == None。 - 优先遍历元素:
for item in items,而不是手写下标循环。 - 使用
dict.get()处理可能缺失的键。 - 使用 f-string 格式化字符串。
- 每个项目建立
.venv,安装包用python -m pip。 - 先写小而清晰的函数;只有需要封装状态和行为时再创建类。
完成本页所有示例后,你已经具备阅读常见 Python 项目、编写脚本和进入 Web/数据/自动化等方向的基础。