(original) (raw)
On Tue, Jul 13, 2010 at 05:48, Nick Coghlan <ncoghlan@gmail.com> wrote:
On Tue, Jul 13, 2010 at 10:37 AM, Alexander BelopolskyI don't think so. I suspect I got away with this mistake because the
<alexander.belopolsky@gmail.com> wrote:
> In my experiments, 0 is not equivalent to None:
>
>>>> import sys, time
>>>> sys.modules\['time'\] = 0
>>>> \_\_import\_\_('time')
> 0
>>>> sys.modules\['time'\] = None
>>>> \_\_import\_\_('time')
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> ImportError: No module named time
>
> Am I missing something?
imports I was trying to block in the test suite were all C
acceleration imports of the form "from <module> import \*", and those
will blow up anyway since zero doesn't have \_\_dict\_\_ or \_\_all\_\_
attributes.
Nick's right; 0 fails on an import \* to pull anything in of interest. And as I said on python-checkins -- you can ignore that email, Alexander -- there is a historical reason because in Python 2 if you tried an implicit relative import a value of None met to do an absolute import. This doesn't have that effect in py3k as explicit relative imports are the only way to do relative imports (and luckily importlib does the proper thing for this as well =).