Руководящие привычки Perl в среде Python

Я делаю это с Мерзавцем. Просто, создайте репозиторий Мерзавца своего каталога:

git-init
git add .
git commit -m "Done"

Вставляют палку, CD к каталогу на нем (у меня есть большой ext2 файл, который я монтирую с-o циклом), и сделайте:

git-clone --bare /path/to/my/dir

Затем я беру палку к другому компьютеру (домой, и т.д.). Я могу работать непосредственно над палкой или клонироваться еще раз. Перейдите к некоторому dir на жестком диске и:

git-clone /path/to/stick/repos

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

красота этого состоит в том, что Вы видите все изменения с 'журналом мерзавца' и даже сохраняете некоторую несвязанную работу в синхронизации, когда это изменяется в обоих местах тем временем.

, Если Вам не нравится командная строка, можно использовать графические инструменты как gitk и мерзавец-gui.

6
задан skaffman 22 January 2012 в 12:16
поделиться

5 ответов

I like the question, but I don't have any experience in Perl so I'm not sure how to best advise you.

I suggest you do a Google search for "Python idioms". You will find some gems. In particular:

http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html

http://docs.python.org/dev/howto/doanddont.html

http://jaynes.colorado.edu/PythonIdioms.html

As for the variable "declaration" issue, here's my best advice for you:

Remember that in Python, objects have a life of their own, separate from variable names. A variable name is a tag that is bound to an object. At any time, you may rebind the name to a different object, perhaps of a completely different type. Thus, this is perfectly legal:

x = 1    # bind x to integer, value == 1
x = "1"  # bind x to string, value is "1"

Python is in fact strongly typed; try executing the code 1 + "1" and see how well it works, if you don't believe me. The integer object with value 1 does not accept addition of a string value, in the absence of explicit type coercion. So Python names never ever have sigil characters that flag properties of the variable; that's just not how Python does things. Any legal identifier name could be bound to any Python object of any type.

1
ответ дан 17 December 2019 в 04:49
поделиться

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

На практике это имеет два основных эффекта:

  1. В Python вы можете ' t использовать регулярные выражения так же естественно, как и Perl, s0 сопоставление каждой итерации $ _ и аналогичный поиск совпадений более громоздок
  2. Функции Python, как правило, вызываются явно или имеют переменные по умолчанию

Однако эти различия довольно незначительны, если учесть, что в Python почти все становится классом. Когда я работал на Perl, я думал о «вырезании»; в Python я скорее чувствую, что «сочиняю».

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

1
ответ дан 17 December 2019 в 04:49
поделиться

Не вводите имена переменных неправильно. Шутки в сторону. Используйте короткие, простые, описательные, используйте их локально и не полагайтесь на глобальную область видимости.

Если вы выполняете более крупный проект, который плохо обслуживается этим, используйте pylint, unit tests и cover.py, чтобы УБЕДИТЬСЯ, что ваш код делает то, что вы ожидаете.

Скопировано из комментария в одном из другие потоки :

«'strict vars' в первую очередь предназначен для того, чтобы не дать опечатанным ссылкам и пропущенным 'my' случайно создать глобальные переменные (ну, переменные пакета в терминах Perl). Этого не может произойти в Python как голые присваивания по умолчанию использует локальное объявление, а голые неназначенные символы приводят к исключению. "

0
ответ дан 17 December 2019 в 04:49
поделиться

Прочтите, поймите, следуйте, и люблю PEP 8 , в котором подробно описаны принципы стиля для всего Python.

Серьезно, если вы хотите узнать о рекомендуемых идиомах и привычках Python, это источник.

1
ответ дан 17 December 2019 в 04:49
поделиться

Разделение классов Python на отдельные файлы (например, в Java, по одному классу на файл) помогает найти проблемы с областью видимости, хотя это не идиоматический питон (то есть не питонический).

У меня есть писал python после долгого использования perl и нашел, что это от tchrist полезно, даже несмотря на то, что он старый:

http://linuxmafia.com/faq/Devtools/python-to-perl-conversions.html

Приступаем к использованию Обойтись без самой прекрасной области видимости переменных в Perl - это вторая по сложности проблема с моим переходом perl-> python. Первое очевидно, если у вас много perl: CPAN.

2
ответ дан 17 December 2019 в 04:49
поделиться