这是我的程序,它接受一个列表,一个单词,并从最长到最短对它们进行排序,并打破与随机模块的联系。
import random
def sort_by_length1(words):
t = []
for word in words:
t.append((len(word), random(), word))
t.sort(reverse = True)
res = []
for length, randomm, word in t:
res.append(word)
return res我得到这个错误: TypeError:'module‘对象不可调用
但是当我这样做的时候:from module import module它起作用了??为什么会这样呢?
发布于 2011-09-27 05:14:09
random模块有一个random函数。当你执行import random时,你得到的是模块,这显然是不可调用的。当你做from random import random的时候,你会得到一个可调用的函数。这就是为什么在第二种情况下看不到错误的原因。
您可以在您的REPL中测试这一点。
>>> import random
>>> type(random)
module
>>> from random import random
>>> type(random)
builtin_function_or_method发布于 2011-09-27 05:15:21
from random import random 等同于
import random as _random
random = _random.random所以如果你只做了
import random你必须使用
random.random()而不是
random()发布于 2011-09-27 05:13:37
from random import random等同于:
import random # assigns the module random to a local variable
random = random.random # assigns the method random in the module random您不能调用模块本身,但可以调用它的方法random。具有相同名称的模块和方法只会让人感到困惑;语法清楚地表明了您所指的是哪一个。
https://stackoverflow.com/questions/7561371
复制相似问题