Jeśli masz kolekcję metod w pliku, czy istnieje sposób na włączenie tych plików do innego pliku, ale wywołanie ich bez żadnego przedrostka (tj. Przedrostka pliku)?
Więc jeśli mam:
[Math.py]
def Calculate ( num )
Jak to nazwać w ten sposób:
[Tool.py]
using Math.py
for i in range ( 5 ) :
Calculate ( i )
from Math import *
jest to zalecane .imp
moduł i magiczne połączenie__import__
.Po prostu napisz polecenie „włącz”:
@Deleet:
Uwaga @bfieck jest poprawna, dla kompatybilności z Pythonem 2 i 3 potrzebujesz albo:
Python 2 i 3: alternatywa 1
Python 2 i 3: alternatywa 2
źródło
from module import *
? Ponadto, jeśli wywoływany plik ma kod w treści, ten kod zostanie uruchomiony, jeśli to zrobisz.execfile
compile()
niż wspomniano. Więc poprawne Python 2 i 3: alternatywa 2 to:exec(compile(source=open('myfile.py').read(), filename='myfile.py', mode='exec'))
Jeśli użyjesz:
to pozwoli ci korzystać z funkcji Math, ale musisz wykonać Math.Calculate, więc oczywiście tego nie chcesz.
Jeśli chcesz zaimportować funkcje modułu bez konieczności przedrostków, musisz jawnie nazwać je, na przykład:
Teraz możesz odwoływać się do funkcji Oblicz, Dodaj i Odejmij, używając tylko ich nazw. Jeśli chcesz zaimportować WSZYSTKIE funkcje z Math, zrób:
Należy jednak być bardzo ostrożnym, robiąc to z modułami, których zawartości nie jesteś pewien. Jeśli zaimportujesz dwa moduły, które zawierają definicje dla tej samej nazwy funkcji, jedna funkcja nadpisze drugą, a Ty nic nie będzie mądrzejsze.
źródło
Zauważyłem, że moduł Python inspect jest bardzo przydatny
Na przykład z teststuff.py
I z innego skryptu lub konsoli Pythona
A teraz dostuff powinien znajdować się w zasięgu lokalnym, a dostuff () zwróci konsolę lub skrypty _ nazwa _, podczas gdy wykonanie test.dostuff () zwróci nazwę modułu Pythona.
źródło