Python随机函数

don*_*age 10 python random import

我遇到Python的导入随机函数问题.似乎import random并且from random import random正在导入不同的东西.我目前正在使用Python 2.7.3

Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> random()

Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
    random()
NameError: name 'random' is not defined
>>> random.randint(1,5)

Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
random.randint(1,5)
NameError: name 'random' is not defined
>>> import random
>>> random()

Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
random()

TypeError: 'module' object is not callable
>>> random.randint(1,5)
2
>>> from random import random
>>> random()
0.28242411635200193
>>> random.randint(1,5)

Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
random.randint(1,5)
AttributeError: 'builtin_function_or_method' object has no attribute 'randint'
>>> 
Run Code Online (Sandbox Code Playgroud)

jam*_*jam 25

import random导入随机模块,其中包含与随机数生成有关的各种事项.其中有random()函数,它生成0到1之间的随机数.

以这种方式导入这需要您使用语法random.random().

随机函数也可以单独从模块导入:

from random import random
Run Code Online (Sandbox Code Playgroud)

这允许您random()直接调用.


And*_*ark 15

随机模块包含一个名为功能random(),所以你需要知道你是否已导入模块到您的命名空间,或从模块导入的功能.

import random将导入随机模块,而from random import random将从模块中专门导入随机函数.

因此,您将能够执行以下操作之一:

import random
a = random.random()
b = random.randint(1, 5)
# you can call any function from the random module using random.<function>
Run Code Online (Sandbox Code Playgroud)

要么...

from random import random, randint   # add any other functions you need here
a = random()
b = randint(1, 5)
# those function names from the import statement are added to your namespace
Run Code Online (Sandbox Code Playgroud)


Mar*_*som 9

问题是这里有两个叫做随机的东西:一个是模块本身,一个是该模块中的一个函数.在命名空间中不能有两个具有相同名称的东西,因此您必须选择一个或另一个.


arg*_*age 5

import random 
Run Code Online (Sandbox Code Playgroud)

将模块包含在命名为'random'的命名空间中.

from random import random
Run Code Online (Sandbox Code Playgroud)

包括从命名空间"随机"到全局命名空间的函数"随机".

因此,在第一个示例中,您将调用random.random,在第二个示例中,您将调用random.两者都将访问相同的功能.

同样的,

from random import randint
Run Code Online (Sandbox Code Playgroud)

将randint导入全局命名空间,因此您只需调用randint而不是random.randint.