跳到主要内容
Java 开发者的 Python 快速上手指南 | 极客日志
Python java 算法
Java 开发者的 Python 快速上手指南 综述由AI生成 面向 Java 开发者,对比了 Java 与 Python 在核心差异、语法结构、面向对象编程及常用功能上的不同。重点阐述了动态类型、缩进规则、函数定义、集合操作等关键变化,并提供了文件操作、异常处理、JSON 及 HTTP 请求的代码对照。最后引导读者转变思维,从“万物皆类”转向简洁优雅,利用列表推导式、内置函数等 Python 特性提升效率,并推荐了官方文档及相关学习资源。
魔法巫师 发布于 2026/3/26 更新于 2026/5/28 25 浏览Java 开发者的 Python 快速上手指南
🔄 核心差异对比
一句话总结
特性 Java Python 设计哲学 '明确优于隐式' '简洁优于复杂' 类型系统 静态强类型 动态强类型 编译方式 编译型(JVM 字节码) 解释型(也有字节码) 代码风格 啰嗦但清晰 简洁但需要约定 学习曲线 陡峭 平缓
关键思维转变
⚡ 语法快速对照
1. 变量声明与类型
Java
int age = 25 ;
String name = "张三" ;
List<String> items = new ArrayList <>();
var count = 10 ;
Python
age = 25
name = "张三"
items = []
age: =
name: =
items: [ ] = []
int
25
str
"张三"
list
str
Python 变量是引用 ,不需要声明类型
Python 的类型提示是注解 ,不强制执行
Python 可以随时改变变量类型:age = "二十五" ✅ 合法
2. 基本语法结构
条件语句 if (score >= 90 ) {
System.out.println("优秀" );
} else if (score >= 60 ) {
System.out.println("及格" );
} else {
System.out.println("不及格" );
}
if score >= 90 :
print ("优秀" )
elif score >= 60 :
print ("及格" )
else :
print ("不及格" )
❌ 无大括号 {},用缩进 表示代码块
❌ 无括号 ()(可选)
✅ else if → elif
✅ 用冒号 : 结尾
循环
for (int i = 0 ; i < 5 ; i++) {
System.out.println(i);
}
for (String item : items) {
System.out.println(item);
}
while (condition) {
}
for i in range (5 ):
print (i)
for item in items:
print (item)
for index, item in enumerate (items):
print (f"{index} : {item} " )
while condition:
Python 的 for 更像 Java 的 foreach
range(5) 生成 0-4,等同于 for(int i=0; i<5; i++)
enumerate() 同时获取索引和值
3. 函数/方法定义
Java
public String greet (String name) {
return "Hello, " + name;
}
public static int add (int a, int b) {
return a + b;
}
public void print (String msg) {}
public void print (int num) {}
Python
def greet (name ):
return f"Hello, {name} "
def add (a: int , b: int ) -> int :
return a + b
def greet (name, greeting="Hello" ):
return f"{greeting} , {name} "
def sum_all (*numbers ):
return sum (numbers)
def create_user (name, age, **kwargs ):
print (kwargs)
❌ 无 public/private 修饰符(用命名约定:_private_method)
❌ 无返回类型声明(可选类型提示)
✅ 支持默认参数、可变参数、关键字参数
✅ 无方法重载(用默认参数或 *args, **kwargs 代替)
4. 字符串处理
Java String name = "Python" ;
String msg = "Hello, " + name;
String formatted = String.format("Hello, %s" , name);
String json = """ { "name": "张三" } """ ;
Python name = "Python"
msg = "Hello, " + name
msg = f"Hello, {name} "
msg = f"1 + 1 = {1 +1 } "
msg = "Hello, {}" .format (name)
msg = "Hello, {name}" .format (name="Python" )
text = """ 这是多行
文本 """
"hello" .upper()
"HELLO" .lower()
" hi " .strip()
"a,b,c" .split("," )
5. 集合类型对比
Java
List<String> list = new ArrayList <>();
list.add("a" );
list.get(0 );
list.size();
Set<Integer> set = new HashSet <>();
set.add(1 );
Map<String, Integer> map = new HashMap <>();
map.put("age" , 25 );
map.get("age" );
Python
list_obj = ["a" , "b" , "c" ]
list_obj.append("d" )
list_obj[0 ]
len (list_obj)
list_obj.remove("a" )
tuple_obj = ("a" , "b" , "c" )
tuple_obj[0 ]
set_obj = {1 , 2 , 3 }
set_obj.add(4 )
set_obj.remove(1 )
dict_obj = {"name" : "张三" , "age" : 25 }
dict_obj["age" ]
dict_obj["city" ] = "北京"
dict_obj.get("age" , 0 )
squares = [x**2 for x in range (10 )]
evens = [x for x in range (10 ) if x % 2 == 0 ]
squares_dict = {x: x**2 for x in range (5 )}
nums = [0 , 1 , 2 , 3 , 4 , 5 ]
nums[1 :4 ]
nums[:3 ]
nums[3 :]
nums[-1 ]
nums[::-1 ]
🎯 面向对象编程对比
类定义
Java public class Person {
private String name;
private int age;
public Person (String name, int age) {
this .name = name;
this .age = age;
}
public String getName () { return name; }
public void setName (String name) { this .name = name; }
public void greet () {
System.out.println("Hello, I'm " + name);
}
public static void staticMethod () {
}
}
Person p = new Person ("张三" , 25 );
p.greet();
Python class Person :
species = "Human"
def __init__ (self, name, age ):
self .name = name
self .age = age
def greet (self ):
print (f"Hello, I'm {self.name} " )
def _private_method (self ):
pass
@classmethod
def from_birth_year (cls, name, birth_year ):
age = 2025 - birth_year
return cls(name, age)
@staticmethod
def is_adult (age ):
return age >= 18
@property
def display_name (self ):
return f"Mr./Ms. {self.name} "
@display_name.setter
def display_name (self, value ):
self .name = value.replace("Mr./Ms. " , "" )
p = Person("张三" , 25 )
p.greet()
p2 = Person.from_birth_year("李四" , 1990 )
print (p.display_name)
p.display_name = "Mr./Ms. 王五"
特性 Java Python 访问修饰符 public, private, protected无,用命名约定(_private, __really_private) 构造函数 与类同名 __init__(self)this thisself(必须显式声明)getter/setter 显式方法 @property 装饰器静态方法 static 关键字@staticmethod 装饰器
继承
Java
public class Animal {
protected String name;
public Animal (String name) {
this .name = name;
}
public void makeSound () {
System.out.println("Some sound" );
}
}
public class Dog extends Animal {
public Dog (String name) {
super (name);
}
@Override
public void makeSound () {
System.out.println("Woof!" );
}
}
public interface Flyable {
void fly () ;
}
public class Bird extends Animal implements Flyable {
@Override
public void fly () {
System.out.println("Flying..." );
}
}
Python
class Animal :
def __init__ (self, name ):
self .name = name
def make_sound (self ):
print ("Some sound" )
class Dog (Animal ):
def __init__ (self, name, breed ):
super ().__init__(name)
self .breed = breed
def make_sound (self ):
print ("Woof!" )
class Flyable :
def fly (self ):
print ("Flying..." )
class Bird (Animal, Flyable):
def make_sound (self ):
print ("Chirp!" )
bird = Bird("Sparrow" )
bird.make_sound()
bird.fly()
✅ 支持多重继承 (Java 只能单继承 + 多接口)
✅ 无 interface 关键字(直接用普通类)
✅ 鸭子类型:不需要显式声明接口
抽象类与接口
Java
public abstract class Shape {
abstract double area () ;
}
public interface Drawable {
void draw () ;
}
Python from abc import ABC, abstractmethod
class Shape (ABC ):
@abstractmethod
def area (self ):
pass
class Drawable (ABC ):
@abstractmethod
def draw (self ):
pass
class Circle (Shape, Drawable):
def __init__ (self, radius ):
self .radius = radius
def area (self ):
return 3.14 * self .radius ** 2
def draw (self ):
print ("Drawing circle" )
💼 常用功能实现对比
1. 文件操作
Java
try (BufferedReader br = new BufferedReader (new FileReader ("file.txt" ))) {
String line;
while ((line = br.readLine()) != null ) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
try (BufferedWriter bw = new BufferedWriter (new FileWriter ("file.txt" ))) {
bw.write("Hello, World!" );
} catch (IOException e) {
e.printStackTrace();
}
Python
with open ("file.txt" , "r" , encoding="utf-8" ) as f:
for line in f:
print (line.strip())
with open ("file.txt" , "r" ) as f:
lines = f.readlines()
with open ("file.txt" , "w" , encoding="utf-8" ) as f:
f.write("Hello, World!" )
with open ("file.txt" , "a" ) as f:
f.write("\nNew line" )
推荐 :使用 with 语句(上下文管理器),自动处理资源释放
2. 异常处理
Java try {
int result = 10 / 0 ;
} catch (ArithmeticException e) {
System.err.println("除零错误:" + e.getMessage());
} catch (Exception e) {
System.err.println("其他错误" );
} finally {
System.out.println("总是执行" );
}
public void doSomething () throws IOException {
throw new IOException ("错误" );
}
Python try :
result = 10 / 0
except ZeroDivisionError as e:
print (f"除零错误:{e} " )
except Exception as e:
print (f"其他错误:{e} " )
else :
print ("没有异常时执行" )
finally :
print ("总是执行" )
def do_something ():
raise ValueError("错误信息" )
class MyException (Exception ):
pass
raise MyException("自定义错误" )
Python 有 else 块(无异常时执行)
Python 无检查型异常,不需要 throws 声明
3. JSON 处理
Java
import com.google.gson.Gson;
class User {
String name;
int age;
}
Gson gson = new Gson ();
User user = new User ();
user.name = "张三" ;
user.age = 25 ;
String json = gson.toJson(user);
User user2 = gson.fromJson(json, User.class);
Python import json
user = {"name" : "张三" , "age" : 25 }
json_str = json.dumps(user, ensure_ascii=False )
user2 = json.loads(json_str)
with open ("data.json" , "w" , encoding="utf-8" ) as f:
json.dump(user, f, ensure_ascii=False , indent=2 )
with open ("data.json" , "r" , encoding="utf-8" ) as f:
user3 = json.load(f)
优势 :Python 的 JSON 处理更简单,不需要定义类
4. HTTP 请求
Java (Spring RestTemplate) RestTemplate restTemplate = new RestTemplate ();
String url = "https://api.example.com/users" ;
User user = restTemplate.getForObject(url + "/1" , User.class);
User newUser = new User ();
User created = restTemplate.postForObject(url, newUser, User.class);
Python (requests 库) import requests
url = "https://api.example.com/users"
response = requests.get(f"{url} /1" )
user = response.json()
new_user = {"name" : "张三" , "age" : 25 }
response = requests.post(url, json=new_user)
created = response.json()
response = requests.get(
url,
params={"page" : 1 , "size" : 10 },
headers={"Authorization" : "Bearer token" }
)
🧠 Java 思维 → Python 思维
1. 不要过度使用类
❌ Java 思维(万物皆类)
class MathUtils :
@staticmethod
def add (a, b ):
return a + b
@staticmethod
def multiply (a, b ):
return a * b
result = MathUtils.add(1 , 2 )
✅ Python 思维(函数式)
def add (a, b ):
return a + b
def multiply (a, b ):
return a * b
result = add(1 , 2 )
2. 拥抱动态类型
❌ Java 思维
def process_data (data ):
if not isinstance (data, list ):
raise TypeError("data must be a list" )
✅ Python 思维(鸭子类型)
def process_data (data ):
for item in data:
print (item)
3. 使用 Python 特色功能
❌ Java 思维
result = []
for i in range (10 ):
if i % 2 == 0 :
result.append(i * i)
✅ Python 思维
result = [i * i for i in range (10 ) if i % 2 == 0 ]
4. 善用内置函数
nums = [1 , 2 , 3 ]
squares = list (map (lambda x: x**2 , nums))
evens = list (filter (lambda x: x % 2 == 0 , range (10 )))
names = ["张三" , "李四" ]
ages = [25 , 30 ]
for name, age in zip (names, ages):
print (f"{name} : {age} " )
has_even = any (x % 2 == 0 for x in [1 , 3 , 5 , 6 ])
all_positive = all (x > 0 for x in [1 , 2 , 3 ])
for i, item in enumerate (["a" , "b" , "c" ]):
print (f"{i} : {item} " )
📚 推荐学习资源
在线资源
书籍推荐
《流畅的 Python》 - 进阶必读
《Python Cookbook》 - 实用技巧
《Effective Python》 - 最佳实践
练习平台
LeetCode - 刷算法题(选 Python)
HackerRank - Python 专项练习
Kaggle - 数据科学项目
🔥 速查表:Java vs Python 功能 Java Python 打印 System.out.println()print()长度 str.length()len(str)字符串拼接 "a" + "b"f"{a}{b}" 或 "a" + "b"数组/列表 int[] arr = new int[5]arr = [1, 2, 3]字典/Map Map<K,V> map = new HashMap<>()dict = {"key": "value"}空值 nullNone布尔值 true/falseTrue/False逻辑运算 `&&, 类型判断 instanceofisinstance()相等比较 .equals()== (对象用 is)三元运算 x ? a : ba if x else b匿名函数 (a, b) -> a + blambda a, b: a + b常量 final无(约定用大写 MAX_SIZE) 包 package/importimport
作为 Java 开发者学 Python,你有巨大的优势 :
✅ 已经理解编程核心概念(变量、函数、类、算法)
✅ 有面向对象思维
✅ 知道如何查文档、debug
🔄 转变思维 :从"万物皆类"到"简洁优雅"
🎯 多写代码 :理论知识 20%,实践 80%
🚀 拥抱生态 :Python 的强大在于丰富的库
相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
Keycode 信息 查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
Escape 与 Native 编解码 JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
JavaScript / HTML 格式化 使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
JavaScript 压缩与混淆 Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
Gemini 图片去水印 基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online