FROM random IMPORT*和IMPORT random之间有什么区别?(random()和randrange



书中有这样的代码示例:

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

它在书中已经取得了成果。

但当我在Netbeans中运行它时。出现以下异常:

*

Traceback(最近一次通话(:文件"C:\Users\Lacces\Documents\NetBeansProjects\Python_GS_Tanulljunk_meg_programozni\src\Adtszerkeztek\Lista.py",第11行,inprint random.randrange(3,13,3(#3-tól 13 ig,3érték elválasztásal AttributeError:'builtin_function_or_method'对象具有无属性"randrange">

*

我有电话帮助谷歌,我发现了这个导入:

import random

有了它,我使用了这个,而不是从随机导入*中的

它成功了!也不例外!

有人能向我解释为什么第一次抛出异常,为什么不在第二次抛出异常吗(对于初学者程序员来说:(

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

优选的方式是import random

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

from random import randrange
from random import random
...

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

如果使用"from moduleName import…."然后,您将获得导入后指定的所有类、函数和变量,或者如果指定了*.:来自随机导入*对于范围(15(中的i:
打印随机范围(3,13,3(

但请注意,这不是很好的导入所有,最好只导入所需的类、函数和变量,所以如果你只需要randrange,你需要使用:

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

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

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

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

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

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

最新更新