Quelle est la différence entre from random IMPORT* et l'IMPORTATION de hasard? (random() et randrange())
Dans le livre a été cette codesample:
from random import*
for i in range(15):
print random.randrange(3,13,3)
Et il ont eu de la suite dans le livre.
Mais quand je le lance dans l'edi Netbeans. La suite excaption arosed:
*
Traceback (most recent call last): File
"C:\Users\Lacces\Documents\NetBeansProjects\Python_GS_Tanuljunk_meg_programozni\src\Adatszerkezetek\Lista.py",
la ligne 11, en
imprimer aléatoire.randrange(3,13,3) #3-tól 13-ig, 3 érték elválasztásal AttributeError: 'builtin_function_or_method' objet a
aucun attribut "randrange'
*
J'ai des appels à l'aide de google, et j'ai trouvé ceci pour l'importation:
import random
Avec qui j'ai utilisé ce lieu de de random import*
Et cela a fonctionné! Sans exception!
Quelqu'un peut-il m'expliquer pourquoi jeter l'exception à la première fois, et pourquoi pas à la deuxième fois (pour un programmeur débutant:))
OriginalL'auteur blaces | 2011-07-14
Vous devez vous connecter pour publier un commentaire.
Lorsque vous
from random import *
, toutes les définitions derandom
devenir une partie de l'actuel espace de nom. Cela signifie que vous n'avez pas de préfixe de quoi que ce soit avecrandom.
, mais cela signifie également que vous pouvez obtenir un nom de collision, sans même le savoir.Le meilleur moyen est
import random
.OriginalL'auteur Mark Ransom
L'importation de tout à partir d'un module est découragé juste à cause de ces surprenants effets secondaires: Le module
random
contient un fonction aléatoire, de sorteimport * from random
effectue les opérations suivantes:Maintenant, quand vous êtes accédant à
random
, vous avez accès au fonction au lieu de la module. Vous pouvez utiliserrandrange
(sans le préfixerandom.
), maisimport random
et indiquant explicitement qu'un module d'une fonction est la meilleure idée.OriginalL'auteur phihag
Si vous utilisez " de nom de module d'importation ....' ensuite, vous obtenez toutes les classes, les fonctions et les variables que vous avez spécifié après l'importation ou la totalité si vous spécifiez *.:
de random import *
for i in range(15):
imprimer randrange(3,13,3)
Mais notez que ce n'est pas très bon pour importer tous, il serait préférable d'importer les classes requises, les fonctions et les variables dans le cas où vous avez seulement besoin de randrange vous devez utiliser:
Dans le cas où vous êtes en utilisant l'importation aléatoire, ce qui signifie que vous module d'importation de sorte que vous devez spécifier le nom de module. lorsque vous voulez l'utiliser ainsi:
OriginalL'auteur Artsiom Rudzenka
from random import *
les importations de toutes les fonctions d'un module appelé aléatoire, mais pasrandom
lui-même.Ici vous pouvez appeler directement les fonctions aléatoires comme suit:
randrange(3,13,3)
, etcimport random
importe le nom de l'aléatoire, à partir de laquelle vous pouvez appeler plus tard les fonctions comme suit:random.randrange(3,13,3)
, etcOriginalL'auteur inspectorG4dget