2013-09-04 3 views
0

Извините, что поставил этот, вероятно, наивный вопрос. Я попытался посмотреть на документ и сделать некоторые эксперименты, но я хотел, чтобы убедиться, что это так:Импорт модуля Python: как насчет модулей, импортированных в импортированный модуль

Если в файле test.py, у меня был:

import module1 

И я делаю это в консоль:

import test 

Я бы не стал импортировать модуль1 в консоль.

И если я это сделать:

from test import * 

Кроме того, module1 не будут импортированы в консоль.

Верно ли это? Спасибо!

+1

Оба они будут импортировать 'module1'. –

ответ

3
import test 

Это импортирует только имя test в текущее пространство имен. Все, что находится в пространстве имен test, доступно как test.whatever; в частности, module1 доступен как test.module1, хотя вы не должны его использовать.

from test import * 

Это импортирует все, что не начинается с символа подчеркивания из имен test «s в текущий. Так как module1 доступен в пространстве имен test, это импортирует имя module1.

+0

Большое спасибо! –

0

Ваш эксперимент может быть проведен очень легко из оболочки:

╭─[email protected] ~ ‹[email protected]› ‹pandas› 
╰─$ echo "import module1" > test.py 
╭─[email protected] ~ ‹[email protected]› ‹pandas› 
╰─$ touch module1.py 
╭─[email protected] ~ ‹[email protected]› ‹pandas› 
╰─$ py 
Python 2.7.5 (default, May 17 2013, 07:55:04) 
[GCC 4.8.0 20130502 (prerelease)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import test 
>>> test.module1 
<module 'module1' from 'module1.py'> 
>>> from test import * 
>>> module1 
<module 'module1' from 'module1.py'> 
Смежные вопросы