首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >:Import module和From module import module有什么区别?

:Import module和From module import module有什么区别?
EN

Stack Overflow用户
提问于 2011-09-27 05:11:27
回答 4查看 131关注 0票数 0

这是我的程序,它接受一个列表,一个单词,并从最长到最短对它们进行排序,并打破与随机模块的联系。

代码语言:javascript
复制
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它起作用了??为什么会这样呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-09-27 05:14:09

random模块有一个random函数。当你执行import random时,你得到的是模块,这显然是不可调用的。当你做from random import random的时候,你会得到一个可调用的函数。这就是为什么在第二种情况下看不到错误的原因。

您可以在您的REPL中测试这一点。

代码语言:javascript
复制
>>> import random
>>> type(random)
module
>>> from random import random
>>> type(random)
builtin_function_or_method
票数 2
EN

Stack Overflow用户

发布于 2011-09-27 05:15:21

代码语言:javascript
复制
from random import random 

等同于

代码语言:javascript
复制
import random as _random
random = _random.random

所以如果你只做了

代码语言:javascript
复制
import random

你必须使用

代码语言:javascript
复制
random.random()

而不是

代码语言:javascript
复制
random()
票数 3
EN

Stack Overflow用户

发布于 2011-09-27 05:13:37

代码语言:javascript
复制
from random import random

等同于:

代码语言:javascript
复制
import random          # assigns the module random to a local variable
random = random.random # assigns the method random in the module random

您不能调用模块本身,但可以调用它的方法random。具有相同名称的模块和方法只会让人感到困惑;语法清楚地表明了您所指的是哪一个。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7561371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档