Конфликт имён
Анти-паттерн
Избегайте использования зарезервированных оригинальных имён модулей, классов, функций и переменных. Их использование, возможно, не сломает код сразу, но позже может доставить много проблем.
Для получения всех встроенных имён выполните код в python:
import builtins
print(dir(builtins))
Пример 1¶
После объявления переменной с названием datetime доступ к классу datetime будет нарушен. Вместо него будет находиться переменная с датой.
Плохо:
from datetime import datetime
datetime = datetime(2025, 1, 1, 0, 0, 0)
Хорошо:
from datetime import datetime
naive_datetime = datetime(2025, 1, 1, 0, 0, 0)
Пример 2¶
В случае конфликта имён при импорте модулей используйте alias.
Плохо:
import pandas
pandas = 'Data science library'
df = pandas.DataFrame([1, 2, 3])
Хорошо:
import pandas as pd
lib_name = 'Data science library'
df = pd.DataFrame([1, 2, 3])
Пример 3¶
str, int, float, dict, list, set, tuple, ...
Плохо:
str = 'Строка'
Хорошо:
text = 'Строка'
Пример 4¶
Плохо:
class Postcard(BaseModel):
id: int
holiday_id: str = Field(alias='holidayId')
Хорошо:
class Postcard(BaseModel):
card_id: int = Field(alias='id')
holiday_id: str = Field(alias='holidayId')
Пример 5¶
Плохо:
def open(file_path):
...
return file
Хорошо:
def get_file(file_path):
...
return file