when to use import statements in the header, when to use import statements in the blocks where they are used?
Dave Angel
d at davea.name
Tue Feb 7 21:41:49 EST 2012
More information about the Python-list mailing list
Tue Feb 7 21:41:49 EST 2012
- Previous message (by thread): when to use import statements in the header, when to use import statements in the blocks where they are used?
- Next message (by thread): when to use import statements in the header, when to use import statements in the blocks where they are used?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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 at 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. -- DaveA
- Previous message (by thread): when to use import statements in the header, when to use import statements in the blocks where they are used?
- Next message (by thread): when to use import statements in the header, when to use import statements in the blocks where they are used?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list