J'ai écrit un tas de fonctions stockées dans différents fichiers python au cours des dernières années que je voudrais vider dans un dossier et utiliser simplement `` dossier d'importation '' pour appeler les fonctions à partir de ces fichiers python.

Jusqu'à présent, toutes les solutions que j'ai lues doivent soit:

    from folder.pyfilename import func1 
    func1()

Ou

    from folder import *
    pyfilename.func1()

Est-ce que quelqu'un sait s'il est possible de faire quelque chose comme ça?

1
Xian Li 24 oct. 2020 à 08:23

2 réponses

Meilleure réponse

Vous pouvez ajouter un fichier folder/__init__.py et lui demander d'importer le sous-dossier.

__init__.py

from .prog1 import foo, bar
from .prog2 import baz

__all__ = ["foo", "bar", "baz"]

__all__ liste les variables qui sont importées par from foo import * donc ce n'est pas vraiment tous les noms, mais ce sont tous les noms dont l'implémenteur pense que vous devriez vous soucier.

Vous pouvez maintenant écrire des programmes qui

from folder import *

foo()
1
tdelaney 24 oct. 2020 à 05:58

Votre question n'a pas trop de sens pour être honnête, mais vous pouvez faire quelque chose comme ceci:

    import folder.program as prog
    from folder import program2 as prog2
    prog.function()
    prog2.function()

Au cas où vous ne le sauriez pas, le mot clé as est utilisé pour créer un alias.

Autant que je sache, vous ne pouvez pas faire ce que vous voulez. Vous devez indiquer à python dans quel fichier se trouve la fonction.

Je suppose que vous voulez importer le dossier entier car cela prendrait un certain temps pour ajouter toutes les importations? Je pense que vous auriez juste à copier toutes les fonctions que vous voulez dans un seul fichier - ou import chaque fichier / fonction comme vous l'avez déjà fait.

1
Alfie Hanks 24 oct. 2020 à 05:44