Se você tiver uma coleção de métodos em um arquivo, há uma maneira de incluir esses arquivos em outro arquivo, mas chamá-los sem qualquer prefixo (ou seja, prefixo do arquivo)?
Então, se eu tenho:
[Math.py]
def Calculate ( num )
Como posso chamá-lo assim:
[Tool.py]
using Math.py
for i in range ( 5 ) :
Calculate ( i )
from Math import *
é recomendado .imp
módulo interessante e chamada mágica__import__
.Basta escrever o comando "incluir":
@Deleet:
A observação @bfieck está correta, para compatibilidade com python 2 e 3, você precisa de:
Python 2 e 3: alternativa 1
Python 2 e 3: alternativa 2
fonte
from module import *
? Além disso, se o arquivo que você está chamando tiver código no corpo, esse código será executado, se você fizer isso.execfile
compile()
além da mencionada. Portanto, o Python 2 e 3 corretos: a alternativa 2 será:exec(compile(source=open('myfile.py').read(), filename='myfile.py', mode='exec'))
Se você usar:
então isso permitirá que você use as funções do Math, mas você deve fazer Math.Calculate, de modo que é obviamente o que você não quer.
Se você deseja importar as funções de um módulo sem ter que prefixá-las, você deve nomeá-las explicitamente, como:
Agora, você pode fazer referência a Calculate, Add e Subtract apenas por seus nomes. Se você quiser importar TODAS as funções do Math, faça:
No entanto, você deve ter muito cuidado ao fazer isso com módulos cujo conteúdo não tem certeza. Se você importar dois módulos que contêm definições para o mesmo nome de função, uma função sobrescreverá a outra, sem você saber disso.
fonte
Achei o módulo de inspeção python muito útil
Por exemplo com teststuff.py
E de outro script ou console Python
E agora dostuff deve estar no escopo local e dostuff () retornará o console ou scripts _ nome _ enquanto que a execução de test.dostuff () retornará o nome dos módulos python.
fonte