Python: импорт в начале основной программы и PEP 8

Предполагая, что ruby-2.0.0-p247 установлено, rails находится в следующем месте.

prayag@prayag$ ls -l ~/.rvm/gems/ruby-2.0.0-p247/bin/
total 60
-rwxr-xr-x 1 prayag prayag 484 Oct  2 00:20 cap
-rwxr-xr-x 1 prayag prayag 487 Oct  2 00:20 capify
-rwxr-xr-x 1 prayag prayag 475 Oct  1 21:13 erubis
-rwxr-xr-x 1 prayag prayag 469 Oct  1 21:13 rackup
-rwxr-xr-x 1 prayag prayag 480 Oct  1 21:18 rails
-rwxr-xr-x 1 prayag prayag 494 Oct  2 00:27 restclient
-rwxrwxr-x 1 prayag prayag 368 Oct  1 21:10 ruby_executable_hooks
-rwxr-xr-x 1 prayag prayag 467 Oct  2 00:27 sass
-rwxr-xr-x 1 prayag prayag 475 Oct  2 00:27 sass-convert
-rwxr-xr-x 1 prayag prayag 467 Oct  2 00:27 scss
-rwxr-xr-x 1 prayag prayag 487 Oct  1 21:20 sprockets
-rwxr-xr-x 1 prayag prayag 483 Oct  2 00:29 stripe-console
-rwxr-xr-x 1 prayag prayag 467 Oct  1 21:17 thor
-rwxr-xr-x 1 prayag prayag 467 Oct  1 21:20 tilt
-rwxr-xr-x 1 prayag prayag 474 Oct  1 21:16 tt

[1] .bash_profile уже должны содержать следующую строку, если не добавить.

 [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

[2] Добавить следующую строку в конец .bashrc.

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
PATH="${PATH}:${HOME}/.rvm/gems/ruby-2.0.0-p247/bin/"

[3] Перезагрузить ~/.bashrc

$ source ~/.bashrc

И, это должно работать.

5
задан Eric O Lebigot 30 July 2011 в 07:18
поделиться

5 ответов

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

9
ответ дан 18 December 2019 в 07:30
поделиться

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

Однако sys я бы определенно импортировал раньше, в Топ. Это настолько распространенный модуль, что вполне вероятно, что вы можете использовать sys где-нибудь в своем скрипте и не заметить, что он не всегда импортируется. sys также является одним из модулей, который всегда загружается самим Python, поэтому вы не экономите время запуска модуля, избегая импорта (в любом случае, запуск sys не так уж велик).

6
ответ дан 18 December 2019 в 07:30
поделиться

Я бы порекомендовал вам делать то, что вы считаете наиболее подходящим, когда в PEP нет ничего о вашей проблеме.

2
ответ дан 18 December 2019 в 07:30
поделиться

Импорт sys не требует этого долго, что я буду беспокоиться об этом. Однако некоторые модули требуют больше времени. Я не думаю, что sys действительно сильно забивает пространство имен. Я бы не стал использовать переменную или класс с именем sys, несмотря ни на что.

Если вы думаете, что размещение его наверху приносит больше вреда, чем пользы, во что бы то ни стало делайте это, как хотите. PEP 8 - это всего лишь ориентир, и большая часть кода, который вы видите, не соответствует ему.

2
ответ дан 18 December 2019 в 07:30
поделиться

Проблема не в производительности.

Проблема в ясности.

Ваша "основная" программа сегодня является только основной программой. Завтра это может быть библиотека, включенная в какую-нибудь основную программу более высокого уровня. Позже это будет всего лишь один модуль в большом пакете.

Поскольку жизнь вашей «основной» программы может измениться, у вас есть два ответа.

  1. Изолируйте «основные» вещи внутри if __name__ == «__main __» . Это не гротескное нарушение PEP-8. Это разумный способ упаковать вещи.

  2. Постарайтесь ограничить количество функций в ваших «основных» программных скриптах. Попытайтесь сократить их до import s и if __name__ == "__main __" . Если ваш основной скрипт небольшой, вопрос об импорте отпадет:

2
ответ дан 18 December 2019 в 07:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: