书中有这样的代码示例:
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)
等