[Python-ideas] "maybe import"?

Cameron Simpson cs at zip.com.au
Sat Dec 28 01:15:42 CET 2013


On 27Dec2013 01:57, Amber Yust <amber.yust at gmail.com> wrote:
> It's a fairly standard pattern to see things like this:
> 
>     try:
>         import foo
>     except ImportError:
>         foo = None
> 
> (and of course, variants with from...import et cetera). These can
> potentially add a lot of clutter to the imports section of a file, given
> that it requires 4 lines to do a conditional import.
> 
> It seems like it'd be useful and clean to have a syntax that looked like
> this:
> 
>     maybe import foo
[...snip...]

The problem here is that the only reason to import as above is to
have access to the name "foo".  What is you contingency plan for
the failed import? How does the code cope without "foo".

I'd rather have an ImportError at start than an arbitrarily delayed and
harder to diagnose NameError much later.

Because of this, I'd argue you should almost always want the except:
clause if this is realistic, because you need to have a plan for
the case of failure.

I agree the try/except is wordy and possibly ugly, but I think it
is usually needed when a failed import is not to be fatal.

Cheers,
-- 
Cameron Simpson <cs at zip.com.au>

Every particle continues in its state of rest or uniform motion in a straight
line except insofar as it doesn't.      - Sir Arther Eddington


More information about the Python-ideas mailing list