Немного путают с импортом python

Я исхожу из PHP (а также кучу других вещей), и я играю с Python. В PHP, когда я хочу включить другой файл, я просто include или require и все в этом файле включено.

Но кажется, что рекомендуемый способ делать вещи в python – это from file import но, похоже, это больше для включения в библиотеки и прочее? Как вы отделите свой код от нескольких файлов? Это единственный способ сделать это, чтобы иметь один файл с целым набором вызовов функций, а затем импортировать 15 других файлов?

5 Solutions collect form web for “Немного путают с импортом python”

Все вещи совершенно разные между PHP и Python, и есть много причин.

Но кажется, что рекомендуемый способ делать вещи в python – это from file import но, похоже, это больше для включения в библиотеки и прочее?

Действительно, операторы import предназначены для импорта объектов из другого модуля в текущий модуль. Вы можете импортировать все объекты импортированного модуля в текущий модуль:

 import foo print foo.bar 

или вы можете выбрать, что вы хотите от этого модуля:

 from foo import bar print bar 

и даже лучше, если вы дважды импортируете модуль, он будет импортироваться только один раз:

 >> import foo as foo1 >> import foo as foo2 >> foo1 is foo2 True 

Как вы отделите свой код от нескольких файлов?

Вы должны думать о своем коде … Это называется разработкой программного обеспечения, и вот несколько правил:

  • вы никогда не пишете алгоритм на уровне модуля; вместо этого сделайте это функцией и вызовите эту функцию
  • вы никогда не создаете экземпляр объекта на уровне модуля; вы должны встроить его в функцию и вызвать эту функцию
  • если вам нужен объект в нескольких разных функциях, создайте класс и инкапсулируйте этот объект в этот класс, а затем используйте его в своих функциях, связанных с этим классом (так что теперь они называются методами)

Единственное исключение – когда вы хотите запустить программу из командной строки, добавьте:

 if __name__ == "__main__": 

в конце модуля. И моим лучшим советом было бы просто назвать вашу первую функцию потом:

 if __name__ == "__main__": main() 

Это единственный способ сделать это, чтобы иметь один файл с целым набором вызовов функций, а затем импортировать 15 других файлов?

Это не единственный способ сделать это, но это лучший способ сделать это. Вы делаете все свои алгоритмы в библиотеках функций и объектов, а затем импортируете именно то , что вам нужно в других библиотеках и т. Д. Вот как вы создаете целый юниверс многоразового кода и никогда не должны изобретать велосипед! Поэтому забудьте о файлах и подумайте о модулях, содержащих объекты.

Наконец, мой лучший совет для вас, изучающий python, заключается в том, чтобы разузнать каждую привычку и использование, которые у вас были при кодировании PHP, и снова изучить эти вещи по-другому. В конце концов, это может сделать вас лучше инженером-программистом.

Наверное, я понимаю, что вы хотите сказать и сделать.

Вот случайный пример из PHP:

Файл №1 – vars.php

 <?php $color = 'green'; $fruit = 'apple'; ?> 

Файл №2 – main.php

 <?php echo "A $color $fruit"; // A include 'vars.php'; echo "A $color $fruit"; // A green apple ?> 

Команда fist echo будет печатать только строку «A», поскольку у нее нет значений, назначенных для vars. Следующее эхо будет печатать полную строку, благодаря вашему включению перед ней.

Импорт «Python», однако, импортирует модуль или его часть, поэтому вы можете работать с ним в своем текущем модуле.

Вот пример python:

Файл 1 – echo.py

  apple = 'apple' color = 'green' 

Файл 2 – main.py

 import echo def func(): print "A "+echo.color+" "+echo.fruit if __name__ == '__main__': func() 

Другими словами – вы импортируете некоторые функции из одного модуля, а затем используете его в другом модуле.

Приведенный выше пример не очень хорош в стандартах программирования или лучших практиках, но я думаю, что это дает вам некоторое понимание.

Интересный вопрос. Как вы знаете, в PHP вы можете отделить свой код с помощью include, который буквально принимает весь код во включенном файле и помещает его туда, куда вы вызывали include. Это удобно для написания веб-приложений, потому что вы можете легко разделить страницу на части (например, заголовок, навигация, нижний колонтитул и т. Д.).

Python, с другой стороны, используется для большего удобства, чем просто веб-приложения. Чтобы повторно использовать код, вы должны полагаться на функции или старое объектно-ориентированное программирование. PHP также имеет функции и объектно-ориентированное программирование FYI.

Вы пишете функции и классы в файле и импортируете их в другой файл. Это позволяет вам получить доступ к функциям или использовать классы, определенные вами в другом файле.

Допустим, у вас есть функция foo в файле file1.py . Из file2.py вы можете записать file2.py . Затем вызовите foo с file1.foo() . В качестве альтернативы напишите from file1 import foo а затем вы можете вызвать foo с помощью foo() . Обратите внимание, что from позволяет вам напрямую вызвать foo. Для получения дополнительной информации просмотрите документы python.

На техническом уровне импорт Python очень похож на PHP, поскольку он будет выполнять импортированный файл. Но так как Python не предназначен для создания файла HTML, то, как вы его используете, очень отличается.

Обычно файл Python на уровне модуля не включает много исполняемого кода вообще, а определения функций и классов. Вы их импортируете и используете их в качестве библиотеки.

Следовательно, наличие таких вещей, как header () и footer (), не имеет смысла в Python. Это просто функции. Назовите их так, и результат, который они генерируют, будет проигнорирован.

Итак, как вы разделили свой код на Python? Ну, вы разделили его на функции и классы, которые вы вставляете в разные файлы, а затем импортируете.

Есть execfile() которая делает что-то неопределенно сопоставимое с execfile() PHP, здесь, но это почти наверняка то, что вы не хотите делать. Как говорили другие, это просто другая модель и другая потребность программирования в Python. Ваш код будет идти от функции к функции, и на самом деле не имеет никакого значения, в каком порядке вы их ставите, если они находятся в том порядке, в котором вы определяете вещи до их использования. Вы просто не пытаетесь найти какой-то упорядоченный документ, похожий на PHP, так что необходимости там нет.

  • Группировка ключей словаря Python в виде списка и создание нового словаря с этим списком в качестве значения
  • Как определить, содержит ли 2-мерный список значение?
  • Как проверить, является ли переменная целой или строкой?
  • Найти уникальные композиции подмножеств k-различных элементов для набора из n элементов
  • Точное обнаружение скрытого портала в python
  • Есть ли переносимый дистрибутив Python 2.7 Windows без каких-либо библиотек?
  • Установка h5py на сервере Ubuntu
  • Булева проверка не работает в функции
  • Вращающийся список в Python без collection.deque
  • Python: список списка списков списков
  • Объединяйте списки в Python, помещая каждый n-й элемент из одного списка и других из другого?
  • Python - лучший язык программирования в мире.