Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #20014 > unrolled thread

Re: when to use import statements in the header, when to use import statements in the blocks where they are used?

Started byMark Lawrence <breamoreboy@yahoo.co.uk>
First post2012-02-08 08:17 +0000
Last post2012-02-08 08:17 +0000
Articles 1 — 1 participant

Back to article view | Back to comp.lang.python

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: when to use import statements in the header, when to use import statements in the blocks where they are used? Mark Lawrence <breamoreboy@yahoo.co.uk> - 2012-02-08 08:17 +0000

#20014 — Re: when to use import statements in the header, when to use import statements in the blocks where they are used?

FromMark Lawrence <breamoreboy@yahoo.co.uk>
Date2012-02-08 08:17 +0000
SubjectRe: when to use import statements in the header, when to use import statements in the blocks where they are used?
Message-ID<mailman.5537.1328689086.27778.python-list@python.org>
On 08/02/2012 02:41, Dave Angel wrote:
> You forgot to include the list in your reply, so I'm forwarding it for
> you. One way you could have done it was to reply-all.
>
>
> On 02/07/2012 09:32 PM, Patto wrote:
>> Dave Angel:
>>
>> On Wed, Feb 8, 2012 at 10:05 AM, Dave Angel<d@davea.name> wrote:
>>
>>> On 02/07/2012 08:48 PM, Lei Cheng wrote:
>>>
>>>> Hi all,
>>>>
>>>> In a py file, when to use import statements in the header, when to use
>>>> import statements in the blocks where they are used?
>>>> What are the best practices?
>>>> Thanks!
>>>>
>>>> Pat
>>>>
>>>> Best practice is to put all the imports at the beginning of the module,
>>> so they are easy to spot.
>>>
>>> If you put an import inside a function, it gets re-executed each time
>>> the
>>> function is called, which is a waste of time. Not too much, since import
>>> first checks sys.modules to see if it's already loaded.
>>>
>>> Also, avoid the from xxx import * form, as it pollutes the
>>> namespace. And it makes it hard to figure out where a particular name is
>>> declared.
>>>
>>> I believe these and other best practices can be found in pep8.
>>>
>>> http://www.python.org/dev/**peps/pep-0008/<http://www.python.org/dev/peps/pep-0008/>
>>>
>>>
>>> --
>>>
>>> DaveA
>>>
>>>
>> yeah, I read pep8.
>> However I find in the file path/to/djcelery/loaders.py from django-celery
>> source, there are so many import/from statements used inside functions, I
>> do not know why the author coded like this. Are there any special facts?
>>
>
> I can't speak for django or django-celery. There are people that
> disagree on this, and there are some reasons to override the ones I
> mentioned. One would be large modules that are not used in most
> circumstances, or not used till the program has run for a while.
>
> If you put the import inside a function, you can save on startup time by
> deferring some of the logic till later. And if there's a module that
> probably won't be used at all (eg. an error handler), perhaps you can
> avoid loading it at all.
>
> I still think readability trumps all the other reasons, for nearly all
> programs. Only once you decide you have a performance problem should you
> change that.
>

There's a thread on the dev ml about imports that also discusses startup 
times for anyone who's interested.

-- 
Cheers.

Mark Lawrence.

[toc] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web