131 votes

Comment inclure un code Python externe à utiliser dans d’autres fichiers ?

Si vous avez une collection de méthodes dans un fichier, y a-t-il un moyen d’inclure ces fichiers dans un autre fichier, mais de les appeler sans n’importe quel préfixe (préfixe de fichier, par exemple) ?

Donc, si j’ai :

Comment je l’appelle comme ceci :

164voto

Andrew Hare Points 159332

Vous devez importer le fichier en tant que module comme ceci:

import Math

Si vous ne voulez pas de préfixe de votre Calculate fonction avec le nom du module, puis faire ceci:

from Math import Calculate

Si vous voulez importer tous les membres d'un module, puis faire ceci:

from Math import *

Edit: Voici un bon chapitre de Plongée En Python qui va un peu plus en profondeur sur ce sujet.

56voto

Louis Points 1805

Il suffit d'écrire la commande "include":

 import os

def include(filename):
    if os.path.exists(filename): 
        execfile(filename)


include('myfile.py')
 

34voto

ryeguy Points 24980

Si vous utilisez:

import Math

alors qui va vous permettre d'utiliser les Mathématiques sur les fonctions, mais vous devez faire des Maths.Calculer, de sorte que, de toute évidence, vous ne voulez pas.

Si vous souhaitez importer un module de fonctions sans avoir à préfixer, vous devez explicitement nom, comme:

from Math import Calculate, Add, Subtract

Maintenant, vous pouvez faire référence à Calculer, d'Ajouter et de Soustraire seulement par leurs noms. Si vous voulait importer TOUTES les fonctions de Maths, faire:

from Math import *

Toutefois, vous devriez être très prudent lorsque vous faites cela avec les modules dont le contenu vous n'êtes pas sûr de. Si vous importez des deux modules qui contiennent les définitions pour le même nom de fonction, une fonction de remplacer l'autre, avec vous, pas plus sage.

1voto

whardier Points 118

J'ai trouvé le module Python Inspect très utile

Par exemple avec teststuff.py

 import inspect

def dostuff():
    return __name__

DOSTUFF_SOURCE = inspect.getsource(dostuff)

if __name__ == "__main__":

    dostuff()
 

Et à partir d'un autre script ou de la console python

 import teststuff

exec(DOSTUFF_SOURCE)

dostuff()
 

Et maintenant doStuff devrait être dans la portée locale et doStuff () retourne la console ou des scripts nom _ _ alors que l' exécution test.dostuff () retourne le nom de modules de python.

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