Post content
Почему рекомендуют каждый импорт делать на новой строке? Просто так написано в PEP8, скажете вы. Да, это действительно так. Но PEP8 это стилистические рекомендации. Какая практическая польза от такой записи? Несколько раз мои студенты спрашивали зачем писать длинней когда можно короче? Не это ли один из основных принципов в Python? Как мы хотим писать: import os, sys, subprocess Как рекомендуют import os import sys import subprocess Если "нельзя" писать в одну строку, то зачем добавили такую возможность - перечислять имена импорта? Объясняю в два этапа: 🔸Перечисление добавлено для возможности импорта через from, когда из модуля требуется импортнуть несколько имён from os.path import join, expanduser, sep В PEP328 добавили возможность перечисление вставлять в скобки чтобы переносить на новую строку без экранирования символа новой строки Было from os.path import join, expanduser, \ sep, basename, exists Стало from os.path import (join, expanduser, sep, basename, exists) 🔸 Практическая польза от импортов на разных строках заметна когда вы делаете слияние разных веток кода с конфликтами или просто с изменениями. Допустим, есть два варианта кода # file1.py import fnmatch import time import json import uuid #file2.py import fnmatch, time, json, uuid Зачем-то нам потребовалось изменить импорт, вместо uuid импортим sys. Что покажет нам diff? # file1.py -import uuid +import sys # file2.py -import fnmatch, time, json, uuid +import fnmatch, time, json, sys Заметили разницу? Пусть даже для GIT это совершенно не проблема, кодревью будет происходить удобней с точки зрения человека. Да, это объяснение человека, который сам делает кодревью (и регулярно сам же нарушает эту рекомендацию, о чем потом жалеет😭) Есть ли у вас еще доводы в пользу каждого импорта на новой строке? #tricks#pep