de ... à l'importation OU à l'importation ... comme pour les modules
Dois-je utiliser
from foo import bar
OU
import foo.bar as bar
quand de l'importation d'un module et il n'y a pas besoin/voulez pour changer le nom (bar
)?
Est-il des différences? Est-il question?
Vous devez vous connecter pour publier un commentaire.
En supposant que
bar
est un module ou un package dansfoo
, il n'y a pas de différence, il n'a pas d'importance. Les deux états ont exactement le même résultat:Si
bar
n'est pas un module ou d'un package, le deuxième formulaire ne fonctionnera pas; un traceback est jeté à la place:import os.path as path
style? pas cet exemple en particulier.. je veux dire que j'ai cherché à travers certaines des plus gros projets sur github, Disponible, Django, etc... absolus, les importations de typeimport x
sont fait ordinaire, avec 1 seul mot jamais, ne pas forcer un alias en faisantimport x.y.z as my_z
. Je veux dire que l'importation est inutile sans un alias; si vous neimport x.y.z
il importe seulementx
et le lie à l'intérieur de l'espace de noms courant, afin d'utiliserz
que vous avez à fairex.y.z
tout le temps, à chaque foisfrom x.y import z
, la syntaxe utilisée dans la question n'est pas commun.import x
comme une plainemodule/package
et l'accès attrs thorughx
(auto-explicatif en gros modules) et là où je dois aller plus que 1 niveau profond-je utiliserfrom x.y import z
; thx pour la réponse:)La seule chose que je peux voir pour la deuxième option est que vous aurez besoin d'autant de lignes que vous souhaitez importer. Par exemple :
Au lieu de simplement faire :
Vous pouvez utiliser comme pour renommer les modules supposons que vous avez deux applications qui ont des points de vue et que vous souhaitez les importer
si vous souhaitez que plusieurs d'importation de l'utilisation de virgules de séparation
C'est une réponse tardive, découlant de quelle est la différence entre " importer un.b comme b " et "à partir d'une importation de b' en python
Cette question a été identifiée comme un doublon, mais il existe une différence importante entre les deux mécanismes qui n'a pas été abordée par d'autres.
from foo import bar
importations tout objet appelébar
de l'espace de nomsfoo
dans l'espace de noms courant.import foo.bar as bar
les importations d'un importables objet (emballage/module/espace de noms) appeléfoo.bar
et lui donne le nom d'aliasbar
.Quelle est la différence?
Prendre un répertoire (dossier) appelé
foo
qui a un__init__.py
contenant:Pendant ce temps, il n'y a aussi un module dans
foo
appelébar.py
.Donne:
Considérant ce qui suit:
Donne:
De sorte qu'il peut être vu que
import foo.bar as bar
est plus sûr.