Гайд для Java-разработчиков
Python для Java-разработчиков: осваивай Python на основе того, что уже знаешь
Уже знаешь Java? Узнай, как знакомые концепции программирования выглядят в Python, что работает иначе и как быстрее всего начать писать продуктивно.
Java и Python: бок о бок
Каждая пара ниже решает одну и ту же задачу. Прочитай знакомый Java-код и посмотри, как то же самое выражается в Python.
Переменные, типы и функции
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 + bВ Python нет объявления типов: имя просто ссылается на значение. Аннотации типов описывают замысел и помогают редакторам и инструментам, но Python не проверяет их во время выполнения программы.
Списки, Map и словари
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"]Списки и словари встроены в язык: у них есть литеральный синтаксис, не нужны импорты и дженерики. Обращение к отсутствующему ключу через [] вызывает KeyError; используй ages.get(name), чтобы получить None, как это делает Map.get в Java.
Циклы и итерация
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 перебирает элементы напрямую. Если нужна ещё и позиция, enumerate отдаёт индекс и значение вместе, поэтому счётчик вести не нужно.
Классы и объекты
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 — явный первый параметр вместо неявного 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
Переведи знакомые концепции
Сопоставь концепции Java с Python.
Изучи отличия Python
Коллекции, функции, идиоматичный стиль.
Практикуйся на реальном коде
Решай небольшие задачи, а не только читай.
Обрети уверенность
Более сложные и реалистичные задачи.
Трек Hintor «Python для разработчиков» рассчитан на тех, кто переходит на другой язык, а практические задания встроены прямо в уроки. Посмотреть трек «Python для разработчиков»
Мини-задача
Дан список целых чисел. Напиши код на Python, который создаёт новый список из квадратов только чётных чисел.
- Вход
- [1, 2, 3, 4, 5, 6]
- Ожидаемый результат
- [4, 16, 36]
Подсказка: в генератор списка можно добавить фильтр if, а выражение n % 2 == 0 проверяет, чётное ли число n.
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]Генератор списка читается слева направо: вычислить n * n для каждого n из numbers, оставив только чётные. Обычный цикл for с append тоже подойдёт; генератор списка — идиоматичное сокращение.
Готов превратить знания Java в навыки Python?
Ты уже умеешь программировать. Теперь научись думать на Python с помощью пошаговых уроков и практики.
Начать учить Python на Hintor