Python и php совсем разные языки. Php используется почти исключительно в вебе (ну и немножко в скриптовой автоматизации). Python - это язык общего назначения, на нём написано огромное количество программ под Linux, применяется в промышленной автоматизации.
Ввести табуляцию в синтаксис - это на самом деле очень здравая идея, ведь и так все блоки кода обычно форматируются табуляцией, так зачем плодить лишние синтаксические элементы.
Хм. Ну можете считать меня ненормальным, но мне иногда удобнее писать и понимать строчку int Prop { get { return _Prop; } } чем переносить и табулировать на несколько строк. Да и в нормальной IDE часто есть встроенный автоформатер, и обычно настраиваемый. Характерно, что там предусматривается несколько способов табуляции. Форматер писали ненормальные программисты?
именно от того, что "нормально" у каждого человека свое, придумали нотации, список указаний при написании кода, чтобы и после Вас код оставался нормальным для других разработчиков(%
Что сказать... Осталось еще перфокарты вспомнить - чтобы дырки строго соответствовали определенным позициям. Не спорю с нотациями, гвайдлайнами и так далее. Меня просто сильно смущает, что, привыкнув писать в соответствии со вполне_удобными_для_других_разработчиков_гвайдлайнами, рискну совершить логическую ошибку. Короче, я категорически "за" табуляцию, но предпочел бы старые добрые закорючки "{}" для обрамления блоков.
Как это? Думаю, если один раз нажать клавишу табуляции, то она ВЕЗДЕ будет восприниматься, как клавиша табуляции.
А вообще, питоновская система индентов очень дисциплинирует и делает код ОЧЕНЬ читабельным и структурированным.
Характерно что если имеется какой-нибудь форматер, то стили автоформатирования настраиваются. И вроде как все варианты как табулирования, так и расстановок "{" имеют право на жизнь и считаются хорошо читаемыми.
Но конкретно в том, чтобы язык имел определённый стиль, не вижу ничего плохого. На Си++ как-то даже неприятно работать одновременно с несколькими библиотеками с абсолютно разными стилями. А в том же Хаскеле всё просто, все функции зовутся someFoo, все типы SomeData, и табуляция, разумеется (хотя скобочная запись так же возможна).
Но в данном случае не вижу ничего плохого в том, что у языка есть единый стиль. В Хаскеле, например, с маленькой буквы начинаются функции, с большой - данные и классы, и достаточно удобно, хотя сделано это не для человека :)
Блин, прошу извинить за два комментария, что-то заглючило. После отправки первого он не появился (даже обновил несколько раз страницу), а после отправки второго - появился первый (а затем и второй)
Поначалу - да, напрягает, да и потом иногда небольшие проблемы создаёт, но на самом деле очень удобно, когда привыкнешь. Плюс при этом не возникнет холивор на тему "где ставить { - на той же строке, где заголовок функции или на следующей". А это, я вам скажу, серьёзный холивор. Я, например, того, кто поставит на той же строчке, просто на месте порешу...
Когда в одной организации начали веб-девелоперов пересаживать на python (+django), первую неделю все матерились на отступы, но потом ничего привыкли и даже оценили по достоинству. Ведь не дураки же придумали.
Извиняюсь, не понял. Как это выглядит-то? Приходите в контору, раздаете всем дистрибутивы и говорите - начинаем писать на джанго? Что у вас за профессия такая интересная? :)
Нет, я разработчик (:
Когда-то в компании, где я работал, решили перелазить на что-нибудь с пхп, выбирали между рельсами и джанго. Выбрали джанго, сначала всем очень не нравились обязательные отступы, отсутствие возможности присваивания в операторе if и т.п. Но потом привыкли и признали, что это всё только к лучшему.
а че тут спорить? не велика затея — страуструп как давал свои примеры? но если твой код нормальный, то ради бога пиши на новой каждый раз — имеешь право на мелкие отступления. (только что-то я н встречал нигде в рекомендациях такого стиля оформления кода)
42. Выравнивайте скобки вертикально по левой границе
Иногда поиск отсутствующей фигурной скобки превращается в крупную проблему. Если вы вынесете скобки туда, где их хорошо видно, то их отсутствие будет сразу же заметно:
while ( some_condition )
{
// внутренний блок
}
Я в самом деле не люблю так называемый стиль Кэрнигана и Ричи:
if( condition ){
code();
}else{
more_code();
}
Здесь не только трудно проверить скобки на парность, но и отсутствие зрительного разделения за счет строк, содержащих лишь открытые скобки, ведет к ухудшению читаемости.
есть как минимум 4 стиля расстановки скобок в С/С++
Керниган и Ричи лично рекомендую One True Bracing Style - по нему открывающая скобка не переносится на новую строчку...
Все больше статей для новичков появляется на Хабре :) Что ж, наверное, в этом есть и большой плюс, ведь чтобы новички стали профессионалами, надо начинать с азов. А Хабр — это просто место, где много хороших статей про IT. И пусть суровые профи не злятся и не кричат что Хабр уже не тот. В конце концов, спрос рождает предложение.
действительно, у многих бывает, что нет ни времени ни желания на заморочки того, что впринципе то и использовать не будет, а эти статьи расширяют кругозор. хотя должен признать, что иногда статьи для чайников гнилые бывают: берется из середины маленький кусочек и разжевывается самому себе.
А как кстати сделать цикл, повторяющийся очень большое число раз?
Ведь, как я понял range возвращает массив, при большом количестве очень длинных циклов это будет не лучшим образом сказываться на использовании памяти.
range возвращает массив, вернее список. Это значит, что будет создаваться большее колличество объектов. Это верно, но в питоне есть кеширование простых объектов. Если вы создадите массив из 1000 элементов числа 1, это будет не 1000 объектов а 1, и тысяча ссылок на него. (Важно! Нумерные типы в Питоне имунны, объекты не могут быть изменены). В следсвии такого кеширования всевозможные цыклы for i in range(1000) for i in range(500) for i in range(10) не будут сильно влиять на колличество памяти.
xrange() - возвращает итератор а не список. С ним понятно, что нет никаких проблем с памятью.
Рекомендуется всегда использовать xrange()
да, я хотел про это написать, но потом решил для начала не усложнять. тем более что в 3000 будет только range - один за всех :) хотя работать будет как xrange
Человеческий язык не компьютерный, он фонетичен. Подразумевается более менее однозначное соответствие написанного произнесённому. А русский текст ещё и любит склонять существительные. Некириллический алфавит в тексте нежелателен, кроме аббревиатур. Впрочем, даже в этом случаен нежелателен.
Человеческая письменность изобретена для записи звуков, а не понятий. Одинаковое написание подразумевает более или менее одинаковое произношение. Употребление иностранных алфавитов в письменной русской речи этот принцип нарушает, и как раз потому, что все это прочитают по-разному, в силу того, что нормы чтения зависят от языка, который при этом не укзыватся. Кроме того, читатель текста может просто не владеть языком, который имелся в виду. Писать python это всё равно что писать "наш сайт в сети internet".
Что же за привычка такая блядско-лебидивская лезть туда и учить тому, что сам не монимаешь. Зачем вы написали йню? Из вашего поста следует, что только русский язык человеческий. (Для справки многие письменные знаки разных стран не передают звуки, а оперируют понятиями. Более того письменность была «изобретена» как вы высказались ИМЕННО ДЛЯ ЗАПИСИ ПОНЯТИЙ.) Даже в русском языке написанное не пожразумевает такое же произношение. (Для долбиков: Слово «здравствуйте» произносится: «зэдээравээстэвэуйтээ»???). Остальное просто лень комментить, каждое слово набор калобукв. Везде, сука, ламеры и учат ещё других.
А мне кажется что данная статья явно не для habrahabr.
Тебе надо на отдельном сайте выложить свой учебник для начинающих и в блоге "Я пиарюсь" написать где можно почитать сие творение.
Имхо новечек не будет рыскать по сайту и пытаться найти все твои статьи дабы прочитать все от начала до конца =)
а на логотипе языка две змеи. Питон русскому человеку ближе =)
*если перевести python на русский, тот самый питон и получится
в случае с шоу - это название, поэтому переводится близко к звучанию, а не к смыслу. Иначе все Смиты бы стали Кузнецовыми, а шоу бы называлось летающим цирком Мони Питонова )) *
Да, это, пожалуй, мой любимый язык. Только почему Вы пишете, что нужно называть его пайтон? Не вижу ни одной причины, почему по-русски нельзя его называть питон. Мы же не говорим "си-плас-плас" вместо "си-плюс-плюс".
Потому что собственные имена не принято переводить. Конечно, для многих вики не аргумент, но там написаны оба произношения - http://ru.wikipedia.org/wiki/Python.
Ну, мы же любим искать эквиваленты в своем языке, потому, что их произносить легче. Ну нету у нас слова пайтон, зато питон есть, потому многие так его и зовут. Рено Лохан, Шевроле Ламос :) С# - Си Забор :)
Python - замечательный язык, пусть за счёт __некоторых__ self.вещей не такой уж и лаконичный как Ruby, зато очень однозначный с приятным сообществом, которое настрогало очень много интересных вещей. Единственное, жаль, что опциональное статическое типизирование так и не добавили в 3000. Так что продолжаем ждать ES4.
Угу, к self долго привыкнуть не мог и пливался. Но с другой стороны учитывая не возможность прямым способом, без костылей передать указательна на не статическую функцию - член класса в C++, уж лучше питоновский self :)
P.S. Кто-нибудь в курсе, реактор в твистед использует epoll для Linux и kqueue для FreeBSD или тупо select|poll?
02:19:34 ~/Desktop> python "py.py"
Введи число:5
Квадрат этого числа составляет
Traceback (most recent call last):
File "py.py", line 4, in
print "Квадрат этого числа составляет ", x * x
TypeError: can't multiply sequence by non-int of type 'str'
02:19:47 ~/Desktop>
Вот такой вывод. Что он может значить?
Python 2.5.1 (r251:54863, Jan 17 2008, 19:35:17)
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> x = raw_input()
5
>>> x.__doc__
'str(object) -> string\n\nReturn a nice string representation of the object.\nIf the argument is a string, the return value is the same object.'
В статье много спорных моментов и изложение далеко не краткое, а размазанное и что-то частично пропускающее.
Проще wiki-учебник почитать, если уж скорость изучения так важна.
А вообще, одного дистрибутива с манами хватает с головой ;)
Особенно интересует как-таки заставить исполняться python скрипты с помощью mod_python для apache?
Есть python (v2.5.1), apache(v2.2) с установленным mod_python (v3.3.1) сами скрипты почему-то просто выдают свой исходный код. такое ощущение, что до mod_python дела и не доходит.
короче ждём, очень. следующий ЯП для изучения уже выбрал python.
Много же матириала об этом в интернете. Мне кажется статья на хабре должна носить исследовательский харрактер а не описательный. Описалова и на других сайтах хватает.
вот русский перевод руководства http://cargo.caml.ru/djangobook/
я думаю что добавить к нему особо нечего, а если начать излагать по своему, то многие будут недовольны.
честное слово, я просто его скопировал и вставил из адресной строки. почему-то оно ломается.
я попытался завернуть его в tinyurl.com/pyscripter - после вставки на хабр оно тоже сломалось.
пришлось в простой tinyurl адрес завернуть.
Спасибо за статью, давно хотел нечто такое обзорное почитать для начинающих, но почему-то все руки не доходили, может теперь хоть поверхностно (а может и более подробно) про python узнаю :)
Спасибо!
Сам недавно начал учить Python, и наткнулся на проблему с веб приложениями, все основы в общем то понятны, спец. функции и модули разберу потом. Я не нашел ответа (искал несколько дней) на простой вопрос, как в python.publisher (последней версии) получить GET, POST и COOKIES данные. Кроме этой проблемы язык мне нравиться, переходить с PHP не буду, но использовать в подходящих проектах обязательно буду.
лучше сразу смотреть в сторону web-фремворков, таких как Django, Pylons, web.py, TurboGears и т.п. это куда лучше и удобнее чем писать простые CGI.
а по поводу паблишера и параметров формы, все хорошо описано тут http://www.modpython.org/live/current/do…
Очень любопытный синтаксис, непохожий на остальные популярные языки программирования (C++, PHP, JavaScript). Будем учить, не все же на месте топтаться!
есть. есть еще много чего.
вот,например, http://www.python.ru/files/book-ods.pdf
ну и так далее. но у моего цикла статей главная цель - привлечь внимание к языку. кому понравится, тот найдет еще кучу ссылок с документацией и т.п. :)
к тому же после основ я планирую "покрыть" куда более глубокие темы.
как именно ругается?
но думаю надо указать в начале скрипта
# -*- coding: cp1251 -*-
(или какая у вас кодировка)
или просто сохранить файл как UTF-8 :-)
Возникло два вопроса: отступы должны быть табуляциями, или возможны пробелы?
И второй вопрос: преимущества и недостатки по сравнению с Perl и Ruby.
Спасибо за пост!
если мне память не изменяет, то отступы должны быть в 4 пробела. это в целом рекомендация (хотя могу ошибиться) но это убирает разночтения с разным размером табуляции.
а писать про сравнение - честно говоря не хочется, везде есть достоинства и недостатки. потому раздувать холивор - не хотелось бы :)
Насколько мне известно, да. Функциям я предпочитаю операторы, а 1/2. вместо 0.5 использую, т.к. мне так проще представлять и читать дробные показатели степеней.
лишний раз убеждаюсь, что чего-то знать недостаточно, чтобы этому научить
для общего развития почитать интересно, но хотелось бы менее сумбурного изложения
и кстати, урок первый, а "Hello, world!" нету :)
Очень интересный язык. Открыл его для себя достаточно недавно (узнал давно, написал первую программу недавно). Данный хабратопик интереса для меня не представляет - все это уже знаю. Но буду ждать ждать последующих топиков на эту тему и продолжать постепенно учиться работать с этим языком. (постепенно - просто потому что работа и прочие дела не особо оставляют времени для интенсивного изучения)
Скажите, для того кто начинает учиться программировать под Web, какой выбор сделать: PHP или Python? Не хочу начинать холивар, хотел бы услышать обоснованные мнения. Или оба хороши? Спасибо!
оба хороши. но для старта РНР - пожалуй проще. хотя Пайтон помощнее и покрасивее. что-то советовать очень сложно. я бы наверное начинал с РНР, потом, если ощутил потребность в большем - перешел на Пайтончик.
Если есть опыт программирования на других языках, то однозначно Python, если нет - PHP.
Сам пишу на PHP уже несколько лет и жалею, что во время не узнал о питоне =\
Если честно данная статья уж больно сильно напоминает урывки из книги Чаплыгина "Учимся программировать вместе с Питоном", что конечно же не умаляет того, что она чертовски полезна (и книга, и статья). Жду продолжения!!!
Отличный урок. И полезный. ИМХО он может быть хорошим стартом для многих кто сомневается с выбором платформы для разработки. Буду ждать продолжения. :-)
Спасибо за статью. По какой-то странной причине, у меня выдает ошибки на те примеры циклов, которые вы дали… знаю, что должно работать, но что-то никак… Я уже все перепробовал…
Для 3го питона (3.3.2): (я тоже вижу его первый раз, так что могу в чем-то ошибаться)
1. Вкратце отличия нашел ТУТ. (PDF страницы Залил на DropBox )
2. Метод raw_input перестал существовать — теперь его заменяет input() (не знаю, обрабатывает ли он выражения по прежнему, но выдает всегда строку). Print теперь функция, а не оператор. И скобки обязательны.
3. Ссылки на поправленные примеры из статьи (Pastebin)
Основы Python в кратком изложении