Python快速入门(Java开发者版)

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

逻辑运算:andornot

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) 生成从 0n - 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. 基础类型、转换与格式化

常见类型:intfloatstrboolNone。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/数据/自动化等方向的基础。

相关推荐
敲个大西瓜1 小时前
Springboot核心面试题
java·spring boot·后端
器灵科技1 小时前
Seedance2.5 VS MiniMax H3 同日上线:AI短剧创作者该怎么选?
java·人工智能·阿里云·prompt·aigc
gb42152871 小时前
python中pypdf库和langchain-unstructured库在解析pdf文件的时候的区别?
python·langchain·pdf
Y3815326621 小时前
SERP API 请求体 Gzip 压缩优化实战:大数据量降带宽 80%
开发语言·前端·php
weixin199701080161 小时前
☁️《抖店API基础¥0.018/百次·增值¥0.05/百次:云内云外价差架构实战》(附Python源码)
开发语言·python·架构
xbgRS1 小时前
Mybatis源码-核心流程及核心类
java·mybatis
zzh___zzh1 小时前
Java Stream API 常用方法笔记
java·笔记
0566462 小时前
Python数据结构——循环队列
python·学习
zzm6282 小时前
安全嵌套子博弈求解与非完美信息博弈——NIPS 2017 最佳论文阅读笔记
论文阅读·笔记·nips·博弈论