Являются ли эти два метода импорта Python одинаковыми? - PullRequest
1 голос
/ 09 ноября 2019

Редактирование завершено, поскольку мой вопрос был идентифицирован как возможный дубликат другого вопроса, задающего разницу между этими двумя методами.


Я новичок в python, поэтому читал различныемнения на import и from import, чтобы вылечить мою нехватку знаний. РЕДАКТИРОВАТЬ: Я понял разницу, которую он делает, используя любой из методов. Проще говоря, метод import sth.sth_else создает ссылку на sth.sth_else, поэтому мы можем получить доступ ко всему внутри __init__().py из sth_else с использованием sth.sth_else.func() или sth.sth_else.var. Однако, если используется from sth import sth_else , нам не нужно использовать sth с оператором [точка] для разрешения области видимости наряду с sth_else. На этот раз мы можем просто использовать sth_else.func() и sth_else.var. Я узнал все это из самого популярного ответа на вопрос о stackoverflow о разнице между двумя методами импорта. Но даже используя эти два разных метода, я смог найти способ, используя as , чтобы разница, которую я узнал из ответа, стала незначительной / неуместной. Это означало, что я все понял, пока эти два метода импорта не начали предоставлять один и тот же вызов (который отличается от этого ответа), поэтому мне было интересно, есть ли что-то большее, чем кажется на первый взгляд ..


import Метод:

>>> import tkinter.ttk as my
>>> my.Button()
<tkinter.ttk.Button object .!button>
>>> 

from import Метод:

>>> from tkinter import ttk as my
>>> my.Button()
<tkinter.ttk.Button object .!button>
>>> 

Теперь, когда у меня есть знания, я бы сказал,Эти два метода импорта одинаковы во всех аспектах. Но я не уверен на 100% в этом, поэтому мой вопрос: действительно ли эти два метода точно одинаковы?

Ответы [ 2 ]

4 голосов
/ 09 ноября 2019

Нет. Вы не можете сказать, что они абсолютно одинаковы.

Точка ('.'), Используемая в 'import', предназначена для перемещения по пакетам. При импорте с использованием import xyz.abc вы можете импортировать только модули или пакеты, т. Е. «Abc» здесь должен быть модулем или пакетом, в то время как при использовании from xyz import abc вы также можете импортировать любые функции, переменные или классы, присутствующие внутри. модуль 'xyz', то есть 'abc' не обязательно должен быть модулем, это может быть функция, переменная или класс, объявленный внутри этого модуля.

Например, вы можете импортировать функцию sqrt с помощью - from math import sqrt, но вы не можете импортировать ее с помощью import math.sqrt.

Метод 'from import' позволяет сохранить python от компиляции дополнительного кода. и тратить время и ресурсы. Следовательно, он используется для простого импорта простых функций и подпрограмм, созданных внутри другого файла (модуля) python, а не для импорта всего модуля.

1 голос
/ 09 ноября 2019

Они одинаковы. Однако, выберите один из этих методов, который вам больше нравится, и продолжайте использовать его, чтобы быть более последовательным.

...