import in code

Mark Lawrence breamoreboy at gmail.com
Sun Jul 22 10:38:24 EDT 2018


On 22/07/18 05:45, Cameron Simpson wrote:
> On 22Jul2018 06:43, Abdur-Rahmaan Janhangeer <arj.python at gmail.com> wrote:
>> i have found some reputable books that include import within code
>>
>> with ...
>>    import x
>>
>> if ...
>>    import y
>>
>> def ...
>>     import z
>>
>> according to me they should be placed at the top. but an advantage of 
>> it is
>> optimisation where you only load modules if necessary
>>
>> so, import within code can be called unpythonic?
> 
> It is discouraged, because when the imports are at the top they're 
> really obvious. That is a huge gain for maintenance and readability.
> 
> Importing a module is _usually_ pretty cheap. There are some reasons to 
> put off imports until the code which needs them runs, but they are all 
> fairly rare:
> 
> Circular imports: 2 codependent modules. If you have:
> 
>   module A:
>     import B
> 
>   module B:
>     import B
> 
> That won't work: the second import (whichever it turns out to be) will 
> fail. One workaround is to make one of the modules put off the import. A 
> better approach is usually to redesign things so that they don't do a 
> mutual import (move classses etc around, or merge them). This is always 
> feasible, but often is.
> 

I don't ever recall seeing a module try to import itself, but then 
perhaps you meant module B should be importing module A? :)

-- 
My fellow Pythonistas, ask not what our language can do for you, ask
what you can do for our language.

Mark Lawrence




More information about the Python-list mailing list