Przewodnik dla programistów Java

Python dla programistów Java: ucz się Pythona na tym, co już wiesz

Znasz już Javę? Zobacz, jak znane pojęcia programistyczne przekładają się na Pythona, co działa inaczej i jaka jest najszybsza droga do produktywności.

Java i Python obok siebie

Każda para poniżej wykonuje to samo zadanie. Przeczytaj znany kod w Javie, a potem zobacz, jak to samo wyraża Python.

Zmienne, typy i funkcje

Java
int total = 0;
String name = "Ada";

static int add(int a, int b) {
    return a + b;
}
Python
total = 0
name = "Ada"

def add(a: int, b: int) -> int:
    return a + b

Python nie wymaga deklaracji typów: nazwa po prostu wskazuje wartość. Adnotacje typów dokumentują intencje i pomagają edytorom oraz narzędziom, ale Python nie wymusza ich podczas działania programu.

Listy, mapy i słowniki

Java
List<String> langs = new ArrayList<>(List.of("Java", "Python"));
langs.add("SQL");

Map<String, Integer> ages = new HashMap<>();
ages.put("Ada", 36);
int age = ages.get("Ada");
Python
langs = ["Java", "Python"]
langs.append("SQL")

ages = {"Ada": 36}
age = ages["Ada"]

Listy i słowniki są wbudowane w język, mają składnię literałów i nie wymagają importów ani generyków. Odczyt brakującego klucza przez [] zgłasza KeyError; użyj ages.get(name), aby dostać None, podobnie jak w Map.get w Javie.

Pętle i iteracja

Java
for (int i = 0; i < names.size(); i++) {
    System.out.println(i + ": " + names.get(i));
}
Python
for i, name in enumerate(names):
    print(f"{i}: {name}")

Python przechodzi bezpośrednio po elementach. Gdy potrzebujesz też pozycji, enumerate daje indeks i wartość razem, więc nie musisz prowadzić licznika.

Klasy i obiekty

Java
public class Point {
    private final int x;
    private final int y;

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public double distanceToOrigin() {
        return Math.sqrt(x * x + y * y);
    }
}
Python
import math

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def distance_to_origin(self):
        return math.hypot(self.x, self.y)

self to jawny pierwszy parametr zamiast domyślnego this, a obiekty tworzy się bez new. Python nie ma modyfikatorów dostępu; wiodące podkreślenie, jak w _x, z konwencji oznacza element wewnętrzny.

Czego programiści Javy powinni się oduczyć

Niektóre nawyki źle się przenoszą. Te zmiany liczą się najbardziej.

  • Wcięcia są składnią

    Bloki zaczynają się dwukropkiem i są wyznaczane wcięciami, a nie nawiasami klamrowymi. Używaj czterech spacji i trzymaj się tego konsekwentnie.

  • Typy sprawdzane są w trakcie działania

    Typowanie dynamiczne oznacza, że nazwa może wskazywać dowolną wartość, a błędy typów ujawniają się dopiero przy wykonaniu linii. Opcjonalne adnotacje typów i narzędzie takie jak mypy przywracają część bezpieczeństwa znanego z Javy.

  • Iteruj po elementach, nie po indeksach

    Przechodź po samej kolekcji. Zanim napiszesz range(len(items)), sięgnij po enumerate lub zip.

  • Korzystaj z wbudowanych kolekcji

    Listy, słowniki, zbiory i krotki pokrywają większość tego, co importujesz z java.util. Wyrażenie listowe, takie jak [len(w) for w in words], zastępuje prostą pętlę budującą listę; dodaj na końcu if, aby filtrować.

  • Pisz w Pythonie, a nie w Javie w Pythonie

    Pomiń gettery, settery i klasy z jedną metodą. Zwykłe funkcje i moduły to normalna praktyka, a nazwy zapisuje się w snake_case.

Twój plan nauki: z Javy do Pythona

  1. Przełóż znane pojęcia

    Dopasuj pojęcia Javy do Pythona.

  2. Poznaj różnice w Pythonie

    Kolekcje, funkcje, idiomatyczny styl.

  3. Ćwicz na prawdziwym kodzie

    Rozwiązuj małe zadania, nie tylko czytaj.

  4. Zdobądź pewność siebie

    Trudniejsze, bardziej realistyczne wyzwania.

Ścieżka Python dla programistów w Hintor jest przeznaczona dla osób, które zmieniają język programowania, a praktyczne ćwiczenia są częścią lekcji. Zobacz ścieżkę Python dla programistów

Mini wyzwanie

Dla listy liczb całkowitych napisz kod w Pythonie, który utworzy nową listę zawierającą kwadraty wyłącznie liczb parzystych.

Dane wejściowe
[1, 2, 3, 4, 5, 6]
Oczekiwany wynik
[4, 16, 36]

Podpowiedź: wyrażenie listowe może zawierać filtr if, a n % 2 == 0 sprawdza, czy n jest parzyste.

Gotowy, by zamienić wiedzę o Javie w umiejętności Pythona?

Już umiesz programować. Teraz naucz się myśleć w Pythonie dzięki prowadzonym lekcjom i praktyce.

Zacznij naukę Pythona w Hintor
Python dla programistów Java | Naucz się Pythona szybciej – Hintor