Практическое освоение Python для разработчиков
Синтаксис и типизация
Чистый код и PEP 8
В Python читаемость кода — не просто хорошая практика, а часть философии языка. Вместо скобок для определения блоков кода, как в C++ или Java, Python использует отступы. Это заставляет писать визуально структурированный код. Каждый новый уровень вложенности требует дополнительного отступа, обычно в четыре пробела.
Правила оформления кода собраны в документе под названием . Это официальное руководство по стилю, которому следует большинство разработчиков. Следование ему делает ваш код понятным для коллег и для вас самих в будущем. Он охватывает всё: от длины строк (не более 79 символов) до именования переменных (snake_case) и использования пробелов вокруг операторов.
# Плохой пример: смешанные отступы и отсутствие пробелов
def calculate_sum(a,b):
result=a+b
return result
# Хороший пример: согласно PEP 8
def calculate_sum(a, b):
"""Эта функция суммирует два числа."""
result = a + b
return result
Динамическая типизация и ссылки
Если вы пришли из статически типизированных языков, вроде Java или C#, Python может показаться непривычной. В Python тип данных связан не с переменной, а с объектом в памяти. Переменная — это всего лишь имя, или ссылка, указывающая на этот объект. Вы можете легко переназначить переменную, чтобы она указывала на объект совершенно другого типа.
# Переменная 'data' сначала ссылается на целое число
data = 100
print(type(data))
# Теперь та же переменная ссылается на строку
data = "Hello, Python!"
print(type(data))
# А теперь — на список
data = [1, 2, 3]
print(type(data))
Представьте, что в памяти есть коробки с разными вещами: одна с числом, другая со строкой. Переменная — это просто стикер с именем, который вы можете переклеивать с одной коробки на другую. Когда на коробку не остается ни одного стикера, сборщик мусора Python удаляет её.
Продвинутое форматирование
Забудьте про старые способы форматирования строк через % или метод .format(). С версии Python 3.6 стандартным и наиболее удобным способом стали f-строки (форматированные строковые литералы). Они позволяют встраивать выражения прямо в строку, делая код чище и интуитивнее.
import math
name = "Alice"
_items = 3
price = 49.95
# Простое встраивание переменных
print(f"Пользователь {name} купил(а) {_items} предмета.")
# Встраивание выражений и вызовов функций
total_cost = _items * price
print(f"Общая стоимость: {total_cost:.2f} 💲")
# Можно использовать и более сложные выражения
print(f"Значение pi, округленное до 3 знаков: {math.pi:.3f}")
Моржовый оператор и краткость
В Python 3.8 появился новый синтаксис — выражения присваивания, также известные как :=. Он позволяет присвоить значение переменной прямо внутри выражения. Это помогает избежать дублирования кода и сделать его более лаконичным, особенно в циклах while или в условных конструкциях.
Классический пример — чтение файла построчно, пока строки не закончатся.
# Без оператора моржа
while True:
line = file.readline()
if not line:
break
print(line)
# С оператором моржа
while (line := file.readline()):
print(line)
Другой инструмент для написания краткого кода — условные выражения, также известные как тернарный оператор. Они позволяют записать простую конструкцию if-else в одну строку. Это удобно для присваивания значений или в выражениях lambda.
# Стандартная запись
status_code = 200
if status_code == 200:
status_message = "OK"
else:
status_message = "Error"
# С условным выражением
status_message = "OK" if status_code == 200 else "Error"
Пришло время проверить, как вы усвоили материал.
Что в Python используется для определения блоков кода вместо фигурных скобок, как в Java или C++?
Согласно руководству по стилю PEP 8, какая рекомендуемая максимальная длина строки кода?
Освоение этих идиоматических особенностей Python поможет вам писать не просто работающий, а по-настоящему чистый и эффективный код.