Eu, por exemplo, sou grato por esta pergunta, porque a resposta é concisa e fornece o conhecimento exato necessário. A documentação é ótima e elegante, mas é detalhada e contém mais informações do que o que o OP estava pedindo e certamente mais do que eu precisava. Eu só queria uma resposta para essa pergunta específica, e a resposta abaixo é exatamente o que eu queria. Muitos de nós simplesmente não precisam de respostas formais ou detalhadas.
Ah, então quando você diz que o nome do arquivo é tratado como um espaço para nome, você faria algo assim? "mymodule.var1" para o primeiro caso ou "myclass.var1" para o segundo?
Dark Templar
1
Não exatamente. O pacote ainda conta como parte do espaço para nome. Se você quiser fazer o que disse, precisará do mypackage import mymodule.
Yam Marcovic
Pode ser útil adicionar algo sobre pacotes de namespace, para os quais o código não precisa necessariamente aparecer na mesma árvore de diretórios.
precisa saber é o seguinte
@holdenweb Nunca usei os diferentes mecanismos envolvidos lá diretamente, portanto não é um especialista. Se você fornecer uma explicação detalhada sobre o assunto em uma nova resposta, eu irei me referir a ela.
Yam Marcovic
Provavelmente um pouco muito esotérico para valer a pena, em retrospecto
Respostas:
Um módulo Python é simplesmente um arquivo de origem Python, que pode expor classes, funções e variáveis globais.
Quando importado de outro arquivo de origem Python, o nome do arquivo é tratado como um espaço para nome.
Um pacote Python é simplesmente um diretório de módulo (s) Python.
Por exemplo, imagine a seguinte árvore de diretórios em
/usr/lib/python/site-packages
:Então você faria:
ou
fonte