为什么导入random模块时会出现TypeError: 'module' object is not callable?

9 投票
4 回答
28713 浏览
提问于 2025-04-15 21:48

我正在使用Python 2.6,想要运行一个简单的随机数生成器程序(random.py):

import random

for i in range(5):

    # random float: 0.0 <= number < 1.0
    print random.random(),

    # random float: 10 <= number < 20
    print random.uniform(10, 20),

    # random integer: 100 <= number <= 1000
    print random.randint(100, 1000),

    # random integer: even numbers in 100 <= number < 1000
    print random.randrange(100, 1000, 2)

现在我遇到了以下错误:

C:\Users\Developer\Documents\PythonDemo>python random.py
Traceback (most recent call last):
  File "random.py", line 3, in <module>
    import random
  File "C:\Users\Developer\Documents\PythonDemo\random.py", line 8, in <module>
    print random.random(),
TypeError: 'module' object is not callable

C:\Users\Developer\Documents\PythonDemo>

我查阅了Python的文档,这个版本的Python是支持随机数的。难道我还漏掉了什么吗?

4 个回答

3

编辑: 看起来你的文件名和内置的随机模块是一样的,所以你应该把文件名改成其他的,正如其他人建议的那样。

但是在那之后,你还需要修改你的代码来初始化随机类。

rand=random.Random()

rand.uniform(10, 20)

另外,对于其他人来说,你是直接调用模块本身,而不是随机类。

>>> for i in range(5):
...     # random float: 0.0 <= number < 1.0
...     print rand.random(),
...
...     # random float: 10 <= number < 20
...     print rand.uniform(10, 20),
...
...     # random integer: 100 <= number <= 1000
...     print rand.randint(100, 1000),
...
...     # random integer: even numbers in 100 <= number < 1000
...     print rand.randrange(100, 1000, 2)
...
0.024357795662 12.3296648076 886 478
0.698607283236 16.7373296747 245 638
0.69796131038 14.739388574 888 482
0.543171786714 11.3463795339 106 744
0.752849564435 19.4115177118 998 780
>>>
7

把你的示例程序文件改名为 myrandom.py 或者其他类似的名字。你可能搞混了导入的内容。

23

给你的文件起个别的名字。在Python中,一个脚本实际上就是一个模块,而模块的名字是由文件名决定的。所以当你在文件 random.py 中使用 import random 时,你就会在模块结构中形成一个循环。

撰写回答