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
int total = 0;
String name = "Ada";
static int add(int a, int b) {
return a + b;
}total = 0
name = "Ada"
def add(a: int, b: int) -> int:
return a + bPython 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
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");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
for (int i = 0; i < names.size(); i++) {
System.out.println(i + ": " + names.get(i));
}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
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);
}
}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
mypyprzywracają część bezpieczeństwa znanego z Javy.Iteruj po elementach, nie po indeksach
Przechodź po samej kolekcji. Zanim napiszesz
range(len(items)), sięgnij poenumeratelubzip.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ńcuif, 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
Przełóż znane pojęcia
Dopasuj pojęcia Javy do Pythona.
Poznaj różnice w Pythonie
Kolekcje, funkcje, idiomatyczny styl.
Ćwicz na prawdziwym kodzie
Rozwiązuj małe zadania, nie tylko czytaj.
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.
numbers = [1, 2, 3, 4, 5, 6]
even_squares = [n * n for n in numbers if n % 2 == 0]
print(even_squares) # [4, 16, 36]Wyrażenie listowe czyta się od lewej do prawej: oblicz n * n dla każdego n z numbers, zachowując tylko parzyste. Zwykła pętla for z append też zadziała; wyrażenie listowe to idiomatyczny skrót.
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