Si vous avez une collection de méthodes dans un fichier, existe-t-il un moyen d'inclure ces fichiers dans un autre fichier, mais de les appeler sans aucun préfixe (par exemple, préfixe de fichier)?
Donc si j'ai:
[Math.py]
def Calculate ( num )
Comment l'appeler comme ça:
[Tool.py]
using Math.py
for i in range ( 5 ) :
Calculate ( i )
from Math import *
n'est pas recommandé .imp
module intéressant et appel magique__import__
.Écrivez simplement la commande "inclure":
@Deleet:
La remarque @bfieck est correcte, pour la compatibilité python 2 et 3, vous avez besoin soit:
Python 2 et 3: alternative 1
Python 2 et 3: alternative 2
la source
from module import *
? De plus, si le fichier que vous appelez contient du code dans le corps, ce code sera exécuté, si vous faites cela.execfile
compile()
que celle mentionnée. Donc, le bon Python 2 et 3: l'alternative 2 sera:exec(compile(source=open('myfile.py').read(), filename='myfile.py', mode='exec'))
Si tu utilises:
alors cela vous permettra d'utiliser les fonctions de Math, mais vous devez faire Math.Calculate, donc c'est évidemment ce que vous ne voulez pas.
Si vous souhaitez importer les fonctions d'un module sans avoir à les préfixer, vous devez les nommer explicitement, comme:
Désormais, vous pouvez référencer Calculer, Ajouter et Soustraire uniquement par leurs noms. Si vous souhaitez importer TOUTES les fonctions de Math, procédez comme suit:
Cependant, vous devez être très prudent lorsque vous faites cela avec des modules dont vous n'êtes pas sûr du contenu. Si vous importez deux modules qui contiennent des définitions pour le même nom de fonction, une fonction écrasera l'autre, vous n'en serez pas plus sage.
la source
J'ai trouvé le module d'inspection python très utile
Par exemple avec teststuff.py
Et depuis un autre script ou la console python
Et maintenant, dostuff devrait être dans la portée locale et dostuff () retournera la console ou les scripts _ nom _ alors que l'exécution de test.dostuff () retournera le nom des modules python.
la source