2015-05-20 4 views
8

Se non mi sbaglio, queste due linee fanno esattamente la stessa cosa:Perché esistono metodi ridondanti per importare in Python?

import theano.tensor as T 

from theano import tensor as T 

C'è qualche motivo per cui ci sono modi ridondanti per importare in Python?

+0

che può spiegare come la situazione è venuto per essere, ma allora la domanda sarebbe il motivo per cui è stato uno scelto per essere uno standard rispetto all'altro? –

+0

Non fanno la stessa cosa * in tutte le circostanze * ... – jonrsharpe

risposta

6

La dichiarazione

import theano.tensor 

funziona solo se theano.tensor è un modulo stessa. Questo è ciò che consente a entrambi i tuoi esempi di funzionare.

Considerare sys.argv, che non è un modulo. Le seguenti opere:

from sys import argv 

che importa argv nel namespace globale, ma la forma import non lo fa:

>>> import sys.argv 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named argv 
+0

Risposta stupenda, grazie. E per un seguito noob, che tecnicamente è il nome di 'sys.argv' se non è un modulo? –

+0

Quindi stai dicendo che possiamo usare la notazione punto solo per accedere ai sottomoduli, altrimenti non possiamo usare questa notazione ..? – nbro

+1

'sys.argv' è solo il nome completo di un oggetto (in questo caso, un'istanza di' list'.) – chepner