Я думаю, что приведение оператора import близко к фрагменту, который использует его, помогает читаемости, делая свои зависимости более ясными. Будет ли Python кэшировать это? Мне все равно? Это плохая идея?
def Process():
import StringIO
file_handle=StringIO.StringIO('hello world')
#do more stuff
for i in xrange(10): Process()
Немного больше оправдания: это для методов, которые используют тайные биты библиотеки, но когда я реорганизую метод в другой файл, я не понимаю, что я пропустил внешнюю зависимость, пока не получаю ошибку времени выполнения.