[Tutor] calling a module fails

Steven D'Aprano steve at pearwood.info
Tue Oct 30 02:28:52 CET 2012


On 30/10/12 12:00, richard kappler wrote:

[...]
> If, however, I save the above in a file named hungry.py, then import
> hungry, I get an error, as follows:
>
> import hungry
> hungry(96)
> Traceback (most recent call last):
>    File "<stdin>", line 1, in<module>
> TypeError: 'module' object is not callable
>
> So what am I missing? Someone do please point out the obvious. ;-)

You have a module called "hungry" and a function called "hungry" inside
that, so to reach the inner "hungry" you need to do this:

import hungry
hungry.hungry(96)


Which is no different from:

import math
math.cos(0.96)

Python will never try to guess which inner function you want when you
call a module directly, not even if the inner function has the same
name as the module. You must always explicitly tell it which inner
function you want.


An alternative is this:

from hungry import hungry  # like "from math import cos"
hungry(96)


-- 
Steven


More information about the Tutor mailing list