语法基础差异
变量声明和类型
面向对象编程
函数声明与调用
继承与多态
集合操作
特殊方法与装饰器
异常处理
Python特有特性
快速入门建议
Java:
public class Example { public void method() { if (condition) { // code block } } }
Python:
def method(): if condition: # code block
主要区别:
Python 使用缩进来定义代码块,不需要花括号
Python 不需要分号结尾
Python 不需要显式声明类(除非必要)
Java:
String name = "John"; int age = 25; List<String> list = new ArrayList<>();
Python:
name = "John" # 动态类型,无需声明 age = 25 list = [] # 列表声明更简单
主要区别:
Python 是动态类型语言,不需要显式声明变量类型
Python 的变量可以随时改变类型
Python 的集合类型(列表、字典等)使用更简单
Java:
public class Person { private String name; public Person(String name) { this.name = name; } public void sayHello() { System.out.println("Hello, " + this.name); } }
Python:
class Person: def __init__(self, name): self.name = name def say_hello(self): print(f"Hello, {self.name}")
主要区别:
Python 使用 self
代替 Java 的 this
Python 不需要声明访问修饰符(public/private)
Python 使用 __init__
作为构造函数
Python 的方法命名通常使用下划线命名法
Java:
public class Example { // 基本函数声明 public int add(int a, int b) { return a + b; } // 静态方法 public static void staticMethod() { System.out.println("Static method"); } // 可变参数 public void printAll(String... args) { for(String arg : args) { System.out.println(arg); } } }
Python:
# 基本函数声明 def add(a, b): return a + b # 静态方法 @staticmethod def static_method(): print("Static method") # 可变参数 def print_all(*args): for arg in args: print(arg) # 带默认参数的函数 def greet(name, greeting="Hello"): print(f"{greeting}, {name}") # 关键字参数 def person_info(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}")
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!"); } }
Python:
class Animal: def __init__(self, name): self.name = name def make_sound(self): print("Some sound") class Dog(Animal): def __init__(self, name): super().__init__(name) def make_sound(self): print("Woof!") # 多重继承示例 class Pet: def play(self): print("Playing") class DomesticDog(Dog, Pet): pass
Java:
List<String> list = Arrays.asList("a", "b", "c"); Map<String, Integer> map = new HashMap<>(); map.put("key", 1);
Python:
list = ["a", "b", "c"] dict = {"key": 1} # 列表操作 list.append("d") list[0] # 访问元素 list[1:3] # 切片操作 # 字典操作 dict["new_key"] = 2
class Person: def __init__(self, name): self.name = name def __str__(self): return f"Person: {self.name}" def __eq__(self, other): if isinstance(other, Person): return self.name == other.name return False
class Person: def __init__(self): self._name = None @property def name(self): return self._name @name.setter def name(self, value): self._name = value
Java:
try { throw new Exception("Error"); } catch (Exception e) { System.out.println("Caught: " + e.getMessage()); } finally { // 清理代码 }
Python:
try: raise Exception("Error") except Exception as e: print(f"Caught: {str(e)}") finally: # 清理代码
# 生成 1-10 的平方数列表 squares = [x**2 for x in range(1, 11)]
list = [1, 2, 3, 4, 5] print(list[1:3]) # 输出 [2, 3]
a, b = 1, 2 x, y = y, x # 交换变量值
重点关注 Python 的缩进规则
习惯不使用类型声明
多使用 Python 的内置函数和特性
学习 Python 的列表推导式和切片操作
使用 f-string 进行字符串格式化
熟悉 Python 的命名规范(下划线命名法)
理解 Python 的继承机制,特别是 super()
的使用
掌握 Python 的特殊方法(魔术方法)
学习使用装饰器
了解 Python 的异常处理机制
Python 官方文档
Python 交互式学习平台
LeetCode Python 练习题
Real Python 网站
记住,Python 推崇简洁和可读性,很多 Java 中的复杂结构在 Python 中都有更简单的实现方式。建议从简单的程序开始,逐步熟悉 Python 的特性和语法。