Форум сайта python.su
14
Вот и я о том же.
Как-то на проекте один str.lower занимал процентов пять от общего времени - так что, отказываться от него?
Он же такой удобный!
И незачем переписывать кривую реализацию case insensitive string!
str.lower, к слову - ну вообще неимоверно быстрая операция. Особенно, когда их немного
Офлайн
32
Андрей Светловисправлять баги и кривизну питона - это благое дело, но к нашей теме оно не относится.
И незачем переписывать кривую реализацию case insensitive string!
- правильный, хороший и быстрый
- тоже работает в подавляющем большинстве случаев. Если повезет - вы никогда не увидите темную сторону.
Офлайн
2
o7412369815963В PEP-8.
где написано про правильно/не правильно.
o7412369815963Про удобство это субъективно. Мне например не удобно.
Раз разработчики питона сделали такую возможность, тем более она привносит в общем случае только удобство, значит им нужно пользоваться.
Офлайн
14
Отчего-то вспомнилось заявление одного из разработчиков Питона: “Мы все взрослые люди. Если программист хочет выстрелить себе в ногу - нужно предоставить ему возможность это сделать”.
Офлайн
32
Александр КошелевТам не написано про не правильно, там просто описан стиль оформления кода от Гвидо. Тем более импорт в методах не упомянут, возможно он тоже все иморты для метода размещает в начале метода.o7412369815963В PEP-8.
где написано про правильно/не правильно.
Александр КошелевИспользуйте тот метод который вам больше нравится, хорошо что есть варианты, на вкус и цвет…o7412369815963Про удобство это субъективно. Мне например не удобно.
Раз разработчики питона сделали такую возможность, тем более она привносит в общем случае только удобство, значит им нужно пользоваться.
Офлайн
32
Андрей Светловтемные какие-то у вас примеры, мы тут говорим о хорошем альтернативном способе…
Отчего-то вспомнилось заявление одного из разработчиков Питона: “Мы все взрослые люди. Если программист хочет выстрелить себе в ногу - нужно предоставить ему возможность это сделать”.
Офлайн
14
o7412369815963Опять вспоминается выстрел в ногу и длинные рассуждения в python-dev об особенностях механизма импорта.
Используйте тот метод который вам больше нравится, хорошо что есть варианты, на вкус и цвет…
Офлайн
32
Андрей Светловхочу узнать причину, а пока это из серии “дед мороз существует”
Или для вас будут авторитетны слова Бретта Кэнона, который на прошлом пайконе призывал использовать импорт внутри функции с крайней осторожностью?
Офлайн
14
Скорее из серии “земля таки вертится” :)
Импорт выполняет код модуля. Это чревато побочными эффектами.
Берется блокировка. Не очень критично для редко выполняемого кода, но попробуйте вставить .acquire/.release в целочисленную математику - сразу увидите разницу.
Сочетание побочных эффектов и блокировки может дать более чудесные, просто феерические результаты.
Ваш код работает. Неприятностей не случается. И всё отлично. Я тоже иногда перехожу дорогу на красный свет. При этом не заявляю, что это - хорошо и правильно, поскольку меня еще не разу не сбили.
Офлайн
32
Андрей Светловтолько при первом импорте модуля (не стартового файла) - так и должно быть.
Импорт выполняет код модуля. Это чревато побочными эффектами.
Офлайн