目录
- 语法基础差异
- 变量声明和类型
- 面向对象编程
- 函数声明与调用
- 继承与多态
- 集合操作
- 特殊方法与装饰器
- 异常处理
- Python特有特性
- 快速入门建议
1. 语法基础差异
代码块定义
Java:
public class Example {
public void method() {
if (condition) {
// code block
}
}
}
Python:
def method():
if condition:
# code block
主要区别:
- Python 使用缩进来定义代码块,不需要花括号
- Python 不需要分号结尾
- Python 不需要显式声明类(除非必要)
2. 变量声明和类型
Java:
String name = "John";
int age = 25;
List<String> list = new ArrayList<>();
Python:
name = "John" # 动态类型,无需声明
age = 25
list = [] # 列表声明更简单
主要区别:
- Python 是动态类型语言,不需要显式声明变量类型
- Python 的变量可以随时改变类型
- Python 的集合类型(列表、字典等)使用更简单
3. 面向对象编程
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 的方法命名通常使用下划线命名法
4. 函数声明与调用
基本函数声明
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}")
5. 继承与多态
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
6. 集合操作
列表/数组操作
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
7. 特殊方法与装饰器
特殊方法(魔术方法)
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
8. 异常处理
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:
# 清理代码
9. Python特有特性
列表推导式
# 生成 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 # 交换变量值
10. 快速入门建议
- 重点关注 Python 的缩进规则
- 习惯不使用类型声明
- 多使用 Python 的内置函数和特性
- 学习 Python 的列表推导式和切片操作
- 使用 f-string 进行字符串格式化
- 熟悉 Python 的命名规范(下划线命名法)
- 理解 Python 的继承机制,特别是
super()
的使用 - 掌握 Python 的特殊方法(魔术方法)
- 学习使用装饰器
- 了解 Python 的异常处理机制
推荐学习资源
- Python 官方文档
- Python 交互式学习平台
- LeetCode Python 练习题
- Real Python 网站
记住,Python 推崇简洁和可读性,很多 Java 中的复杂结构在 Python 中都有更简单的实现方式。建议从简单的程序开始,逐步熟悉 Python 的特性和语法。