<p>+1</p>
<p>--Guido van Rossum (sent from Android phone)</p>
<div class="gmail_quote">On Apr 10, 2012 5:23 PM, "Steven D'Aprano" <<a href="mailto:steve@pearwood.info">steve@pearwood.info</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Sven Marnach wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Sometimes it is useful to do a import to a global name inside a<br>
function.  A common use case is the 'pylab' module, which must be<br>
imported *after* the backend has been set using 'matplotlib.use()'.<br>
If the backend is configuration-dependent, the statement<br>
<br>
    import pylab<br>
<br>
will usually be inside a function, but the module should be available<br>
globally, so you would do<br>
<br>
    global pylab<br>
    import pylab<br>
<br>
While this code works (at least in CPython), the current language<br>
specification forbids it [1]<br>
</blockquote>
<br>
<br>
I quote:<br>
<br>
    Names listed in a global statement must not be defined as<br>
    formal parameters or in a for loop control target, class<br>
    definition, function definition, or import statement.<br>
<br>
<a href="http://docs.python.org/dev/reference/simple_stmts.html#the-global-statement" target="_blank">http://docs.python.org/dev/<u></u>reference/simple_stmts.html#<u></u>the-global-statement</a><br>
<br>
I can understand that it makes no sense to declare a function parameter as global, and I can an argument in favour of optimizing for loops by ensuring that the target is always a local rather than global. But what is the rationale for prohibiting globals being used for classes, functions, and imports?<br>

<br>
It seems like an unnecessary restriction, particularly since CPython doesn't bother to enforce it. The semantics of "global x; import x" is simple and obvious.<br>
<br>
+1 on removing the unenforced prohibition on global class/def/import inside functions.<br>
<br>
<br>
-- <br>
Steven<br>
<br>
______________________________<u></u>_________________<br>
Python-ideas mailing list<br>
<a href="mailto:Python-ideas@python.org" target="_blank">Python-ideas@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-ideas" target="_blank">http://mail.python.org/<u></u>mailman/listinfo/python-ideas</a><br>
</blockquote></div>