Comments 30
если только вы не из Голландии (видимо имеется ввиду «травокур» — прим. перев.)

Не травокур, а Гвидо ван Россум имелся в виду =) Из Голландии он.
Спасибо большое, а то я мозг сломал, пытаясь угадать тайный смысл)) Как считаете, в тексте в примечании стоит указать его?
Кстати, да, тоже показалось, не самый обычный и простой стиль изложения. Местами очень сложно решить, правильно ли понята мысль автора.
Потому, что таб может быть длиной и 2, 4 и 8 символов — могут возникнуть проблемы при редактировании файла несколькими людьми в редакторах, который настроены по-разному. А 4 пробела — они всегда 4 пробела.
Таб также может быть просто табом… Согласен, могут быть неувязки, когда в одном редакторе таб 4 пробела, в другом он таб, но выглядит как четыре пробела…
Но разве это удобно?
Проблемы будут, когда в пределах одного файла будут встречаться отступы сделанные и табами и пробелами.

ЗЫ. Если вы один редактируете файл — все равно.
там же следом написано — не смешивайте табы и пробелы — в этом и есть зло. а табы они всегда табы, сколько бы места ни занимали.
Если использовать редактор, умеющий заменять табуляции на заданное (настраиваемое) число пробелов, то очень удобно.
Жмешь ли Таб, отщелкиваешь ли пробелы, умный редактор рисует именно пробелы.
В 21-м веке обещали в большинстве редакторов сделать автоотступ:
— по предыдущей строке
— даже по семантике, например, после условия if следующая строка, вложенный блок, будет отбиваться с необходимым сдвигом вправо.
Рекомендую посмотреть на notepad++ и особенно понравился Pyscripter
Да про автоотступы я слышал ) Не видел, чтоб можно было настраивать, чтоб таб был определённым количеством пробелов… Pyscripter посмотрю, спасибо, у вас, кстати, на него ссылка поламалась, ну та ничё
Движок Хабра чудеса творит порой.
Я два дня не мог опубликовать перевод из-за того, что скрипт проверки ссылки на оригинал статьи не пропускал URL, содержащий тильду "~".
Чудом догадался подменить ее на шестнадцатеричный код "%7E". Саппорту про багу отписал.
Спасибо, пожалуй, последую вашему совету, но чуть позже. Хочется посмотреть, как будет оценен сообществом именно мой труд.
Вообще, в планах было предоставить русскоязычный перевод автору статьи. По адресу http://python.net/~goodger/projects/pycon/2007/idiomatic/ он уже расположил ссылку на французский вариант. Собственно, это меня и подтолкнуло меня приложить старание.
Разумеется, автору будет выслан вариант, скорректированный с учетом замечаний читателей Хабра.
> Пространства имен — грандиозная идея, позволяют делать еще больше из них же!

Гугл-транслейт не вмешивался?
Оригинальное «let's do more of those!» переводится как «так давайте же сделаем больше пространств имен!»
кстати, в «Code Like a Pythonista» Code — это однозначно глагол. «Пиши как настоящий питонщик», как-то так.

С Pythonista тоже трудно — если переводить «питонист», но оттенок теряется, т.к. тут суффикс не наш обычный "-ист" (как «программист»), а испанский "-ista":

suffix informal
forming nouns denoting a person associated with a particular activity, often with a derogatory intent: fashionista.
ORIGIN from the Spanish suffix -ista, as in Sandinista.
Я человек, измученный нарзаном немецким в школе. Знакомство с английским произошло через компьютеры, через них же и обучение. С произношением еще хуже, чем с грамматикой, определенно. Знал, что скорее всего неверно понял название, потому и оставил в заголовке оригинал. Все замечания учтем.
Для себя решил, Pythonista — питонист, Pythoneer — питонер. Созвучно, и недалеко от смысла. «Питонщик» как-то коробит (мойщик, грузчик, гладильщик)
Нет, такое мог придумать только я) Вариант переводчиков мне понравился меньше. А вам спасибо, сейчас подправлю.
Однозначно ждем продолжения!
В последнее время питон набирает популярность, с одной стороны это не может не радовать, появляется много интересных статей, а с другой стороны немного страшно за родной язык, как бы его не постигла участь PHP, когда из-за низкого порога входимости в язык, и большого кол-ва мануалов появляется огромное кол-во «программистов» мнящих себя гуру.
[irony]За родной язык и вправду страшно, и за порог входимости, и за культурный уровень его носителей, если вы про русский. [/irony]
Тут скорее не про участь речь должна быть, а про сферу применения, целевую аудиторию, сообщество, развивающее язык. В случае с Python все это чуточку упорядоченней, более академично что ли.
Не вижу связи между сложностью языка и качеством программистов. «Индусов», кодящих на C++ все хвалят? Мало удачных проектов на Delphi?
Все зависит от конкретных людей.
Python — боле-менее универсальный инструмент для решения различных задач, и в его философию заложено быть удобным к прочтению/пониманию. Не переживайте, язык не только перспективный, но и со светлым будущим.
Есть вопрос: как думаете, с чем связана привычка не отбивать пробелами знак = при передаче именованных аргументов функции? насколько это строгое правило?
Мне после php как-то непривычно)
Основной акцент всей статьи — удобочитаемость важнее всего. PEP-рулевые решили, что так красивее и практичнее.
Отбивать пробелы между именем и значением аргумента или не отбивать — все-таки на вашей совести остается, интерпретатор проглотит. Но я в этом месте склоняюсь к рекомендации PEP.
Python допускает указание аргументов функции в виде голых значений, но в строгом соответствии с их порядком в объявлении, для удобства после каждой запятой большинство кодеров отбивают пробел:

a = my_func(1, 2, 'arg3')

Но равновозможно и равноправильно допускается указать аргументы поименно. При этом, скорее всего, вы тоже отобьете пробелы после запятых. Визуально по количеству запятых-пробелов можно ухватить глазом, сколько аргументов передано в функцию.
При этом, если отщелкать пробелами еще и "=", то такое быстрое хватание взглядом становится затруднительным, сравните два варианта кода (я нарочно прилепил еще if с несколькими условиями):

def my_func(num, name, descr, age=20):
    ...

# вариант 1
if a = b and a >= 0:
    res = my_func(1, 'Joe', 'long_long_string', 10)      
else:
    res = my_func(num=2, descr='another_string', name='Lissy', age=18)

# вариант 2
if a = b and a >= 0:
    res = my_func(descr = 'long_long_string2', num = 1, name = 'Bill')      

Мне точно удобнее разобрать количество аргументов в первом варианте
Спасибо за ответ. Единственное, я немного подозреваю, что подсветка синтаксиса может ухудшить первый вариант и улучшить второй в плане читаемости (т.к. в первом варианте каждая из групп, например, со строками будет двухцветной, что раздробит её).
# вариант 1
if a = b and a >= 0‌:
    res = my_func(1'Joe''long_long_string'10)      
else:
    res = my_func(num=2, descr='another_string', name='Lissy', age=18)

# вариант 2
if a = b and a >= 0‌:
    res = my_func(descr = 'long_long_string2', num = 1, name = 'Bill')   
Only those users with full accounts are able to leave comments. Log in, please.