Java 开发者的 Python 快速入门指南_Python

目录

  1. 语法基础差异
  2. 变量声明和类型
  3. 面向对象编程
  4. 函数声明与调用
  5. 继承与多态
  6. 集合操作
  7. 特殊方法与装饰器
  8. 异常处理
  9. Python特有特性
  10. 快速入门建议

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. 快速入门建议

  1. 重点关注 Python 的缩进规则
  2. 习惯不使用类型声明
  3. 多使用 Python 的内置函数和特性
  4. 学习 Python 的列表推导式和切片操作
  5. 使用 f-string 进行字符串格式化
  6. 熟悉 Python 的命名规范(下划线命名法)
  7. 理解 Python 的继承机制,特别是 super() 的使用
  8. 掌握 Python 的特殊方法(魔术方法)
  9. 学习使用装饰器
  10. 了解 Python 的异常处理机制

推荐学习资源

  1. Python 官方文档
  2. Python 交互式学习平台
  3. LeetCode Python 练习题
  4. Real Python 网站

记住,Python 推崇简洁和可读性,很多 Java 中的复杂结构在 Python 中都有更简单的实现方式。建议从简单的程序开始,逐步熟悉 Python 的特性和语法。