77 votes

Importation de modules en Python - meilleure pratique

Je suis nouveau à Python que je veux élargir les compétences que j'ai apprises à l'aide de R. Dans R, j'ai tendance à charger un tas de bibliothèques, parfois, résultant en fonction des conflits de nom.

Quelles sont les meilleures pratiques en Python. J'ai vu des variations spécifiques que je ne vois pas la différence entre

import pandas, from pandas import *, et from pandas import DataFrame

Quelles sont les différences entre les deux premiers et que je devrais simplement importer ce dont j'ai besoin. Aussi, ce serait la pire des conséquences pour quelqu'un qui fait des petits programmes pour traiter les données et de calculer des statistiques simples.

Mise à JOUR

J'ai trouvé cet excellent guide. Il explique tout.

53voto

Paul Points 708

import pandas des importations de l'pandas module sous les pandas de l'espace de noms, de sorte que vous devez appeler les objets dans les pandas à l'aide de pandas.foo.

from pandas import * des importations de tous les objets de l'pandas module dans votre espace de noms courant, de sorte que vous appelleriez des objets à l'intérieur de pandas en utilisant seulement foo. Gardez à l'esprit que cela pourrait avoir unexepcted les conséquences s'il y a des conflits de noms entre les noms et les pandas de l'espace de noms.

from pandas import DataFrame est le même que ci-dessus, mais seulement les importations DataFrame (au lieu de tout) dans votre espace de noms courant.

À mon avis, la première est généralement la meilleure pratique, car elle permet aux différents modules de formation bien compartimenté dans votre code.

25voto

Carles Barrobés Points 5283

En général, il vaut mieux faire des importations explicites. Un péché:

 import pandas
frame = pandas.DataFrame()
 

Ou:

 from pandas import DataFrame
frame = DataFrame()
 

Une autre option en Python, lorsque vous avez des noms en conflit, consiste à importer x en tant que y:

 from pandas import DataFrame as PDataFrame
from bears import DataFrame as BDataFrame
frame1 = PDataFrame()
frame2 = BDataFrame()
 

8voto

XuZhangning Points 555
 from A import B
 

est essentiellement égal à trois déclarations

 import A
B = A.B
del A
 

Voilà, c'est tout.

3voto

Marcelo Cantos Points 91211

Ils sont tous adaptés à différents contextes (c'est pourquoi elles sont toutes disponibles). Il n'y a pas de profonds principe, autre que le générique de la maternité états autour de la clarté, de la maintenabilité et de la simplicité. Quelques exemples de mon propre code:

  1. import sys, os, re, itertools évite les collisions de nom et offre une très succinct de manière à importer un tas de modules standard.
  2. from math import * me permet d'écrire sin(x) au lieu de math.sin(x) en mathématiques-lourds de code. Cela devient un peu risquée lorsque j'ai également import numpy, qui double la mise sur certains de ces points, mais il n'a pas trop d'inquiétude à moi, car ils sont généralement les mêmes fonctions, de toute façon. Aussi, j'ai tendance à suivre les numpy documentation - import numpy as np - qui élude le problème entièrement.
  3. Je suis en faveur de from PIL import Image, ImageDraw simplement parce que c'est la façon dont le PIL documentation présente ses exemples.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X