Найти - Пользователи
Полная версия: инклуд в начале файла или в функции?
Начало » Python для новичков » инклуд в начале файла или в функции?
1 2 3
Андрей Светлов
Вот и я о том же.
Как-то на проекте один str.lower занимал процентов пять от общего времени - так что, отказываться от него?
Он же такой удобный!
И незачем переписывать кривую реализацию case insensitive string!

str.lower, к слову - ну вообще неимоверно быстрая операция. Особенно, когда их немного
o7412369815963
Андрей Светлов
И незачем переписывать кривую реализацию case insensitive string!
исправлять баги и кривизну питона - это благое дело, но к нашей теме оно не относится.

- правильный, хороший и быстрый
- тоже работает в подавляющем большинстве случаев. Если повезет - вы никогда не увидите темную сторону.
это голословно, где написано про правильно/не правильно. и в каких случаях не работает?

Раз разработчики питона сделали такую возможность, тем более она привносит в общем случае только удобство, значит им нужно пользоваться.
Александр Кошелев
o7412369815963
где написано про правильно/не правильно.
В PEP-8.
o7412369815963
Раз разработчики питона сделали такую возможность, тем более она привносит в общем случае только удобство, значит им нужно пользоваться.
Про удобство это субъективно. Мне например не удобно.

Ну а потом, нам много кто и что дает разные возможности, и это не значит что оми всеми надо обязательно пользоваться.
Андрей Светлов
Отчего-то вспомнилось заявление одного из разработчиков Питона: “Мы все взрослые люди. Если программист хочет выстрелить себе в ногу - нужно предоставить ему возможность это сделать”.
o7412369815963
Александр Кошелев
o7412369815963
где написано про правильно/не правильно.
В PEP-8.
Там не написано про не правильно, там просто описан стиль оформления кода от Гвидо. Тем более импорт в методах не упомянут, возможно он тоже все иморты для метода размещает в начале метода.

Александр Кошелев
o7412369815963
Раз разработчики питона сделали такую возможность, тем более она привносит в общем случае только удобство, значит им нужно пользоваться.
Про удобство это субъективно. Мне например не удобно.
Используйте тот метод который вам больше нравится, хорошо что есть варианты, на вкус и цвет…
o7412369815963
Андрей Светлов
Отчего-то вспомнилось заявление одного из разработчиков Питона: “Мы все взрослые люди. Если программист хочет выстрелить себе в ногу - нужно предоставить ему возможность это сделать”.
темные какие-то у вас примеры, мы тут говорим о хорошем альтернативном способе…
Андрей Светлов
o7412369815963
Используйте тот метод который вам больше нравится, хорошо что есть варианты, на вкус и цвет…
Опять вспоминается выстрел в ногу и длинные рассуждения в python-dev об особенностях механизма импорта.

Или для вас будут авторитетны слова Бретта Кэнона, который на прошлом пайконе призывал использовать импорт внутри функции с крайней осторожностью?
o7412369815963
Андрей Светлов
Или для вас будут авторитетны слова Бретта Кэнона, который на прошлом пайконе призывал использовать импорт внутри функции с крайней осторожностью?
хочу узнать причину, а пока это из серии “дед мороз существует”
Андрей Светлов
Скорее из серии “земля таки вертится” :)
Импорт выполняет код модуля. Это чревато побочными эффектами.
Берется блокировка. Не очень критично для редко выполняемого кода, но попробуйте вставить .acquire/.release в целочисленную математику - сразу увидите разницу.
Сочетание побочных эффектов и блокировки может дать более чудесные, просто феерические результаты.

Ваш код работает. Неприятностей не случается. И всё отлично. Я тоже иногда перехожу дорогу на красный свет. При этом не заявляю, что это - хорошо и правильно, поскольку меня еще не разу не сбили.
o7412369815963
Андрей Светлов
Импорт выполняет код модуля. Это чревато побочными эффектами.
только при первом импорте модуля (не стартового файла) - так и должно быть.
если выполняется не только при первом импорте, то хочу увидеть пример.

кривой код чреват побочными эффектами и импорт тут не причем.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB