Cela peut donc vous sembler bizarre. Disons que j'ai deux fichiers, module.py et script.py.

Voici à quoi ils peuvent ressembler:

module.py

import time
print(time.time())

script.py

from module import *
time.sleep(0.1)  # Still works as time is imported in the module imported

Comment éviter que cela ne se produise?

S'il y a une question en double comme celle-ci, faites-le moi savoir.

2
Dmitry Pleshkov 5 avril 2017 à 03:09

2 réponses

Meilleure réponse

La réponse la plus simple est d'éviter d'utiliser from module import *. Cela ne vaut vraiment pas la peine ailleurs que l'invite interactive.

La réponse suivante est de mettre un __all__ dans module.py. __all__ doit être une liste de chaînes. Les chaînes doivent être les noms des éléments que vous souhaitez exporter. Par exemple:

Module.py

import time

__all__ = ['MyClass', 'my_func']

class MyClass():
    pass

def my_func():
    pass
4
mgilson 5 avril 2017 à 00:11

Lors de l'importation, vous pouvez utiliser des fonctions. Fondamentalement, les fonctions dans les fonctions, mais vous pouvez également importer à l'intérieur des fonctions.

def init():
    import time
    def innerFunc():
        time.sleep(.2)
    time.sleep(.1)
    innerFunc()
init()
0
Neil 5 avril 2017 à 00:14