LINUX.ORG.RU

Программирование на Python: Часть 1. Возможности языка и основы синтаксиса

 


0

0

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

>>> Подробности

★★★

Проверено: boombick ()

Ответ на: комментарий от Vudod

> После стиля Питона все эти begin end, обязательные ";" кажутся ужасно тяжёлыми, а фигурные скобки и вовсе бессмысленными.

пистон головного моска

anonymous
()
Ответ на: комментарий от annulen

>может для скриптов Питон и хорош, но писать на нем опенсорс, который предполагается развивать - издевательство на теми, кому придется разбирать код

Та ты шо! И как это я до сих пор работаю.... )))))))))))))))

А может все-тки стоит заботится про оформление кода и его документирование?

Linfan ★★★★★
()
Ответ на: комментарий от mkfifo

>вероятнее всего я немного отстал от жизне..
..

видимо щаз уже появилась чтото наподобее (или круче) Glide ? (как для python-gtk)

Есть gtk# для любителей глайда.
Кроме того moonlight как раз и позволяет делать то, что описали.

grim ★★☆☆
()
Ответ на: комментарий от Vudod

>Питон оставляет вам массу времени на думание вместо быдлокодерства, вот потому на нём логику и разрабатывают.

+500 Доказано на практике.

Кстати, для сложных приложений наиболее оптимальный вариант не С/С++ а Python+C-шные экстеншины. Вся бизнес-логика на стороне питона, а числодробилки в небольших сишных экстеншинах. Особенно тут проявляется отличная интеграция нативных экстеншинов с питоном, плюс мультиплатформенная сборка нативных модулей - один раз билд написал на distutils и пользуешь его на Lin|Win|MacOS X без костылей и ветвлений в большинстве случаев.

Linfan ★★★★★
()
Ответ на: комментарий от Vudod

> После стиля Питона все эти begin end, обязательные ";" кажутся ужасно тяжёлыми, а фигурные скобки и вовсе бессмысленными.

Пока до 3-его уровня вложенности не доходишь, ага-ага.

Gukl ★★★
()
Ответ на: комментарий от Gukl

>> После стиля Питона все эти begin end, обязательные ";" кажутся ужасно тяжёлыми, а фигурные скобки и вовсе бессмысленными.

Пока до 3-его уровня вложенности не доходишь, ага-ага.

В питоне, кроме отступов есть еще так же и функции )))

Alesh
()
Ответ на: комментарий от Alesh

> В питоне, кроме отступов есть еще так же и функции )))

Ну да, если ваше предствление о том, как нужно решать задачу, не совпадает с представлением Гвидо, вы попали 8)

Gukl ★★★
()
Ответ на: комментарий от Linfan

>А может все-тки стоит заботится про оформление кода и его документирование?

+стопицот, однако многие на это забивают. Тем не менее, заголовки в С/С++ - сами по себе неплохая документация к интерфесам модулей

annulen ★★★★★
()
Ответ на: комментарий от Gukl

> После стиля Питона все эти begin end, обязательные ";" кажутся ужасно тяжёлыми, а фигурные скобки и вовсе бессмысленными.

Пока до 3-его уровня вложенности не доходишь, ага-ага.

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

ну и на что Вы намекаете, на то что сместится вправо код? так в других языках разве нет отступов? если же Вы намекаете на то что хрен разберёшься в структуре программы - то вы тролль, лжец и питоновый девственник :)

shty ★★★★★
()
Ответ на: комментарий от annulen

заголовки в С/С++ - сами по себе неплохая документация к интерфесам модулей

Ну не скажите. Это лучше чем ничего, но когда там есть осмысленные буковки то это даже вселяет надежду порой. :)

shty ★★★★★
()
Ответ на: комментарий от Gukl

>> В питоне, кроме отступов есть еще так же и функции )))

Ну да, если ваше предствление о том, как нужно решать задачу, не совпадает с представлением Гвидо, вы попали 8)

Это не представление Гвидо. Еще за долго до него кто-то из «старых монстров» писал об этом. Примерно следущее, если процедура занимает больше одного печатного листа или сложно для понимания или явно может быть логически разбита на части, то нужно разбивать ее на подпроцедуры. В твоем случае это то же применимо: сложны для понимания более 3 отступов -разбивай код на функции.

ЗЫ: Процедурами раньше функции называли

Alesh
()
Ответ на: комментарий от YogSagot

>>Чего только стоит вложенность, управляемая отступом!

Самое удачное архитектурное решение во всем языке. За одно только это Гвидо нужно памятник ставить. =)

за это +много-много))) такая вкусняшка сразу привлекла к себе)

asket82
()
Ответ на: комментарий от shty

> ну и на что Вы намекаете, на то что сместится вправо код? так в других языках разве нет отступов?

Я намекаю, что потрачу лишние секунды на то, чтобы правильно разместить операторы ВНЕ блоков.

Gukl ★★★
()
Ответ на: комментарий от Alesh

Я как бы в курсе. Но бывают ситуации, когда без этого не обойтись, и плохо, что язык не позволяет. Также и с функцией cmp - да, по ключу перебор быстрее, но с того, что никто из разработчиков Питона не придумал ситуацию, в которой нельзя заменить key на cmp не должно следовать, что cmp надо вырезать на корню.

Пришлось писать свою сортировку в конце концов. И это в интерпертируемом ЯП, в 21 веке!

Gukl ★★★
()
Ответ на: комментарий от Gukl

>> ну и на что Вы намекаете, на то что сместится вправо код? так в других языках разве нет отступов?

Я намекаю, что потрачу лишние секунды на то, чтобы правильно разместить операторы ВНЕ блоков.

В ноутпаде ?)

Alesh
()
Ответ на: комментарий от Alesh

>>> ну и на что Вы намекаете, на то что сместится вправо код? так в других языках разве нет отступов?

Я намекаю, что потрачу лишние секунды на то, чтобы правильно разместить операторы ВНЕ блоков.

В ноутпаде ?)

тсс!)

asket82
()
Ответ на: комментарий от Gukl

> ... в которой нельзя заменить key на cmp не должно следовать, что cmp надо вырезать на корню.

Не понял идеи, пример приведи.

Alesh
()
Ответ на: комментарий от Gukl

> ну и на что Вы намекаете, на то что сместится вправо код? так в других языках разве нет отступов?

Я намекаю, что потрачу лишние секунды на то, чтобы правильно разместить операторы ВНЕ блоков.

эм? да вобщем-то нет, при использовании нормальной ide (типа eclipse + pydev) Вы будете доставлены непосредственно на нужный уровень в 1 клик табулятора.

а лишние секунды Вы потратите на расставление ; и { }

shty ★★★★★
()
Ответ на: комментарий от Gukl

> Пришлось писать свою сортировку в конце концов. И это в интерпертируемом ЯП, в 21 веке!

Ну что там с примером? Очень хочется взглянуть для чего пришлось писать свою сортировку в питоне... Ух что-что но тема сортировке в Питоне помоему раскрыта полностью.

Alesh
()
Ответ на: комментарий от VladimirMalyk

> потому что логику гуя лучше делать на высокоуровневом языке

И потом долго ипацо после обновления гнома 2.26->2.28 с модулями, просящими выпилинные библиотеки... ?

Lumi ★★★★★
()
Ответ на: комментарий от annulen

может для скриптов Питон и хорош, но писать на нем опенсорс,

который предполагается развивать - издевательство на теми,

кому придется разбирать код


открою для вас Django

aspel
()
Ответ на: комментарий от annulen

>> открою для вас Django

на php тоже много CMS написано, из этого не следует, что он так уж крут

Он немного другое кажись имел ввиду. То что на Джанке вполне себе уже комфортно писать вебаррсы, да и как бы не Джанга не СМС.

Alesh
()
Ответ на: комментарий от Alesh

Сортировка с неизвестными заранее условиями? Ткните тогда куда-нибудь в документацию, возможно, я что-то пропустил.

Gukl ★★★
()
Ответ на: комментарий от shty

>эм? да вобщем-то нет, при использовании нормальной ide (типа eclipse + pydev) Вы будете доставлены непосредственно на нужный уровень в 1 клик табулятора.

Нет, мне придется сделать точное количество табов (и бэкспейсов, автоматом курсор встанет на уровень, непосредственно следующий за ним), так как IDE за меня не поймет, на каком уровне должен оказаться мой оператор (именно в силу синтаксиса Питона). Со скобками мне задумываться не нужно.

не, может привыкну, конечно, в конце концов...

Gukl ★★★
()
Ответ на: комментарий от Steplton

> Это как раз понятно... Зачем интерпретируемый?

Так удобно же. Поменял что-нибудь и сразу посмотрел результат. Прямо HTML.

Правда, сам я гуй на питоне не писал, только фрэймворки. Но думаю, учитывая необходимость ручной перегрузки изменённого модуля, не всё так просто, как в HTML + F5.
Хотя всё одно должно быть удобнее чем полная перекомпиляция.

queen3 ★★★★★
()
Ответ на: комментарий от anonymous

> никто кроме «элинтного небыдла» им не пользуется

Вам просто не рассказали. Нет, я не про линуксовые поделки, я про корпоративные поделки ;-)

queen3 ★★★★★
()
Ответ на: комментарий от anonymous

> И пока приложение не будет протестировано на 100%, оно в прод не поступает

Пример «энтерпрайза», протестированного на 100% - в студию. Да хотя бы любого приложения сложнее десятка классов.

То, что у энтерпрайзов и не только есть QA - известно. То, что после их «тестирования» приложение у юзера иногда даже просто не запускается - тоже.

Так что не надо пальцы веером. Особенно учитывая любовь «ынтыпрайзов» к индусам.

queen3 ★★★★★
()
Ответ на: комментарий от queen3

> Пример «энтерпрайза», протестированного на 100% - в студию.

BFG покрыт тестами на 100%, самый что ни есть энтерпрайз, не хуже жабьего спринга. http://bfg.repoze.org/

anonymous
()
Ответ на: комментарий от Gukl

Сортировка с неизвестными заранее условиями?

Как это?

Сортируем наверно список, нее?
Алгоритм выборки ключа из элемента списка наверно известен?
Алгоритм сортировки ключей по идее тоже, нее?
В чем проблемм?

def _key(item):
	return item[0]
	
def _cmp(x,y):
	return x-y

A = [(-2,'-1'),(5,'f'),(-6,'-6'),(70,'70')]
print A

A.sort(key=_key, cmp=_cmp)  
print A

A.sort(key=lambda item: item[1], cmp=lambda x,y: cmp(x,y))
print A

Закинь свой пример, может действительно что-то такое эдакое.

Ткните тогда куда-нибудь в документацию, возможно, я что-то пропустил.

Ну здесь посмотри http://wiki.python.org/moin/HowTo/Sorting

Alesh
()
Ответ на: комментарий от Gukl

> Со скобками мне задумываться не нужно.

Все просто, вместо одной закрывающей скобки один бакспэйс)

Alesh
()
Ответ на: комментарий от grim

> Никто не мешает это делать для java/mono

Это геморойнее.

sv75 ★★★★★
()
Ответ на: комментарий от anonymous

6 багов - уже не 100%. Программисты должны уважать числа и точность. И кстати поэтому заметить, что именно багов там 5.

Но дело даже не в этом. QA отвечает не только за баги. QA отвечает за соответствие спецификации. Программист и его unit testing по определению не может добиться здесь 100%, ибо не может выйти за рамки - а иначе QA бы и не нужны были бы (как и бета-тестинг и прочая).

Не надо впадать в болезнь программизма и считать, что всё можно автоматизировать (можно почитать тут http://www.joelonsoftware.com/items/2007/12/03.html). QA по определению не всегда автоматизируется (особенно - для «приложения», а не для кода). А значит, 100% не достижимо.

queen3 ★★★★★
()
Ответ на: комментарий от queen3

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

anonymous
()
Ответ на: комментарий от anonymous

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

Бывают. Это цена, которую приходится платить за динамическую типизацию и Питон здесь ничем не отличается от Руби, Перла или любого другого языка с динамическою типизацией. Есть люди, согласные с таким положением вещей, а есть те, кто нет.

Кстати, в Фортране, компилируемом языки, чьи вычислительные способности не подвергаются сомнению, а типизация строгая почти до безобразия (при настройках по умолчанию 0, 0. и 0._8 суть разные числа) нужно явно написать

implicite none
, чтобы избежать динамической типизации. Причём писать придётся в каждом модуле. И это современный стандарт f90/f95.

Vudod ★★★★★
()
Ответ на: комментарий от Vudod

Кстати, я опечатался, надо писать [code]implicit none[/code] :)

Vudod ★★★★★
()

IBM_dW уже не торт. Тот же самый diveintopython.org дает вводную информацию намного внятнее и качественнее. А эта статья... Мне через два абзаца нестерпимо захотелось переключить внимание на что-нибудь другое. Через следующие два абзаца заболела голова.

И тогда я перепугался, что не доживу до конца статьи. Закрыл вкладку — боль унялась.

shimon ★★★★★
()
Ответ на: комментарий от ubuntulover

Питон тебя подталкивал на правильный стиль написания кода, а именно написания тестируемого кода и тестов соответственно.

dizza ★★★★★
()
Ответ на: комментарий от Reaper

провыерил в Лазарусе, так работает и нафиг нужно это замыкание?

[code]procedure p(n: integer); var procedure fn; begin { тут что-то делается... } end; begin fn(); end;[/code]

yantux
()
Ответ на: комментарий от eugine_kosenko

> Паскаль уже научился делать замыкания?

Привёл пример кода выше. если это и есть замыкания. Только вот зачем нужны эти замыкания?

yantux
()
Ответ на: комментарий от eugine_kosenko

> Пример кода на Питоне:

[(x, y) for x in xrange(0, 100) for y in xrange(0, x) if odd(x + y)]

Я не понимаю синтаксиса и алгоритма этого кода. Разве его нельзя переписать на Паскале?

Паскаль - это реально быстрый язык во на всех этапах: от разработки, до отладки.

yantux
()
Ответ на: комментарий от eugine_kosenko

> Где об этом можно узнать. Ха, Google на «замыкания в Паскале» вообще очень смешные результаты выдает :-).

Взять, да попробовать. Благо Лазарус под любой платформой хорошо работает.

yantux
()
Ответ на: комментарий от anonymous

> Не забудь про время разработки: быстрая разработка и приемлемая

производительность как правило в разы лучше для ынтырпрайза (да и
для хеллоуворлдов), чем быстрая работа и годы на разработку и

> отладку.

Труд хорошего инженера вообще-то стоит дороже труда процессора и
памяти.

Поэтому паскаль лучше питона. Ешё ни ктоне привёл примера кода, который лучше на Питоне, чем на паскале. У Паскаля - Лазару, free pascal одни приемущества перед питоном. С и С++ нужны в самых крайних случаях.

yantux
()
Ответ на: комментарий от Vudod

> Что же касается ошибок и опечаток, они, конечно, досаддны, но всё-таки лучше думать, что пишешь.

Ха! Ха! Ха! Ни чего себе!

Питон оставляет вам массу времени на думание вместо быдлокодерства, вот потому на нём логику и разрабатывают.

Я полагаю, Питон как и С и С++ оставляет массу времени на исправление опечаток, вместо разработки кода.

Что касается думания, то думать надо ДО написания КОДА, т.е. должен быть ПРОЕКТ, хотя в вашем воображении. А кодить надо на автомате.

yantux
()
Ответ на: комментарий от yantux

Ешё ни ктоне привёл примера кода, который лучше на Питоне, чем на паскале.

во-первых обратного тоже никто не видел, а во-вторых чего Вы с ним (Лазарем Моисеевичем) носитесь как дурень с писаной торбой, приложений и библиотек как не было так и нет, в нормальных объёмах

У Паскаля - Лазару, free pascal одни приемущества перед питоном.

и чтобы не быть голословным - список в студию

shty ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.