Гайд для Java-разработчиков

Python для Java-разработчиков: осваивай Python на основе того, что уже знаешь

Уже знаешь Java? Узнай, как знакомые концепции программирования выглядят в Python, что работает иначе и как быстрее всего начать писать продуктивно.

Java и Python: бок о бок

Каждая пара ниже решает одну и ту же задачу. Прочитай знакомый Java-код и посмотри, как то же самое выражается в Python.

Переменные, типы и функции

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 нет объявления типов: имя просто ссылается на значение. Аннотации типов описывают замысел и помогают редакторам и инструментам, но Python не проверяет их во время выполнения программы.

Списки, Map и словари

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"]

Списки и словари встроены в язык: у них есть литеральный синтаксис, не нужны импорты и дженерики. Обращение к отсутствующему ключу через [] вызывает KeyError; используй ages.get(name), чтобы получить None, как это делает Map.get в Java.

Циклы и итерация

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 перебирает элементы напрямую. Если нужна ещё и позиция, enumerate отдаёт индекс и значение вместе, поэтому счётчик вести не нужно.

Классы и объекты

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 — явный первый параметр вместо неявного this, а объекты создаются без new. В Python нет модификаторов доступа: ведущее подчёркивание, как в _x, по соглашению означает «внутреннее».

От чего Java-разработчику стоит отучиться

Некоторые привычки плохо переносятся. Вот самые важные сдвиги.

  • Отступы — это синтаксис

    Блок начинается с двоеточия и задаётся отступами, а не фигурными скобками. Используй четыре пробела и будь последователен.

  • Типы проверяются во время выполнения

    Динамическая типизация означает, что имя может ссылаться на любое значение, а ошибки типов проявляются при выполнении строки. Необязательные аннотации типов и проверка с помощью mypy возвращают часть безопасности Java.

  • Перебирай элементы, а не индексы

    Проходи по самой коллекции. Прежде чем писать range(len(items)), подумай о enumerate или zip.

  • Опирайся на встроенные коллекции

    Списки, словари, множества и кортежи покрывают большую часть того, что ты импортируешь из java.util. Генератор списка вроде [len(w) for w in words] заменяет простой цикл, который наполняет список; добавь if в конце, чтобы отфильтровать элементы.

  • Пиши на Python, а не на Java внутри Python

    Геттеры, сеттеры и классы с одним методом не нужны. Обычные функции и модули — это нормально, а имена пишутся в snake_case.

Твой план перехода с Java на Python

  1. Переведи знакомые концепции

    Сопоставь концепции Java с Python.

  2. Изучи отличия Python

    Коллекции, функции, идиоматичный стиль.

  3. Практикуйся на реальном коде

    Решай небольшие задачи, а не только читай.

  4. Обрети уверенность

    Более сложные и реалистичные задачи.

Трек Hintor «Python для разработчиков» рассчитан на тех, кто переходит на другой язык, а практические задания встроены прямо в уроки. Посмотреть трек «Python для разработчиков»

Мини-задача

Дан список целых чисел. Напиши код на Python, который создаёт новый список из квадратов только чётных чисел.

Вход
[1, 2, 3, 4, 5, 6]
Ожидаемый результат
[4, 16, 36]

Подсказка: в генератор списка можно добавить фильтр if, а выражение n % 2 == 0 проверяет, чётное ли число n.

Готов превратить знания Java в навыки Python?

Ты уже умеешь программировать. Теперь научись думать на Python с помощью пошаговых уроков и практики.

Начать учить Python на Hintor
Python для Java-разработчиков | Быстро освой Python – Hintor