【问题标题】:What is the difference between FROM random IMPORT* and IMPORT random? (random() and randrange())FROM random IMPORT* 和 IMPORT random 有什么区别? (随机()和 randrange())
【发布时间】:2011-07-14 15:29:51
【问题描述】:

书中已有这段代码示例:

from random import*
for i in range(15):                     
        print random.randrange(3,13,3)

并在书中得到了结果。

但是当我在 Netbeans 中运行它时。出现了以下说明:

*

Traceback(最近一次调用最后一次):文件 "C:\Users\Lacces\Documents\NetBeansProjects\Python_GS_Tanuljunk_meg_programozni\src\Adatszerkezetek\Lista.py", 第 11 行,在 print random.randrange(3,13,3) #3-tól 13-ig, 3 érték elválasztásal AttributeError: 'builtin_function_or_method' object has 没有属性'randrange'

*

我打电话来帮助谷歌,我找到了这个用于导入:

import random

我用这个代替了 from random import*

它奏效了!也不例外!

有人能解释一下为什么第一次抛出异常,第二次为什么不抛出(对于初学者来说:))

【问题讨论】:

    标签: python import


    【解决方案1】:

    当您from random import * 时,来自random 的所有定义都将成为当前名称空间的一部分。这意味着您不必在任何东西前面加上 random.,但这也意味着您可能会在不知情的情况下发生名称冲突。

    首选方式是import random

    【讨论】:

      【解决方案2】:

      由于这些令人惊讶的副作用,不鼓励从模块中导入所有内容:模块random 包含一个随机的函数,因此import * from random 执行以下操作:

      from random import randrange
      from random import random
      ...
      

      现在,当您访问random 时,您访问的是函数,而不是模块。您可以使用randrange(不带前缀random.),但import random 并明确说明函数来自哪个模块是更好的主意。

      【讨论】:

        【解决方案3】:

        如果你使用'from moduleName import ....',那么你会得到你在导入之后指定的所有类、函数和变量,或者如果你指定了*.: 随机导入 * 对于范围内的 i (15):
        打印 randrange(3,13,3)

        但请注意,这并不是很好地全部导入,最好只导入所需的类、函数和变量,这样万一你只需要你需要使用的 randrange:

        from random import randrange
        for i in range(15):                     
            print randrange(3,13,3)
        

        如果您使用 import random,这意味着您要导入模块,因此您需要指定 moduleName。当你想使用它时:

        import random
        for i in range(15):                     
            print random.randrange(3,13,3)
        

        【讨论】:

          【解决方案4】:

          from random import * 从名为 random 的模块导入所有函数,但不导入 random 本身。

          这里可以直接随机调用函数如下:randrange(3,13,3)

          import random 导入随机名称,以后可以从中调用函数,如下所示:random.randrange(3,13,3)

          【讨论】:

            猜你喜欢
            • 2020-07-23
            • 2019-06-07
            • 1970-01-01
            • 1970-01-01
            • 2011-07-04
            • 2013-05-20
            • 2015-08-24
            • 2017-09-18
            • 2018-09-21
            相关资源
            最近更新 更多