Java 開發者的 Python 快速入門指南

Seachal發表於2024-11-30

目錄

  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 官方文件:https://docs.python.org/
  2. Python 互動式學習平臺:https://www.pythontutor.com/
  3. LeetCode Python 練習題
  4. Real Python 網站:https://realpython.com/

記住,Python 推崇簡潔和可讀性,很多 Java 中的複雜結構在 Python 中都有更簡單的實現方式。建議從簡單的程式開始,逐步熟悉 Python 的特性和語法。

相關文章