LINUX.ORG.RU

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

 


0

0

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

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

★★★

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

интересно, почитаем-с

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

а вообще хуже питона ничего нет, в попытке написать простого ирц-бота пришлось сильнее попотеть при отладке, нежели бы использовался чистый Си — эта скотина любит умалчивать опечатки или какие-то полные глупости, если они во время запуска не входят в выполняемый code-path, в итоге оно валится посередине работы, СОБАКА, МИНУТУ ПОДКЛЮЧАЛСЯ к ИРЦ-СЕТИ, чТОБЫ узНАТЬ, что я ОПЕчатался в имени ФУНКЦИИ, а ЧТО если я буду писать приложение ПО УПРАВЛениЮ кардиостимулятором или ядерНЫМ рЕАКТОРОМ? иначе можно сделать вывод, что пейтон пригоден только для поделий, которые не делают никкакой полезной работы — нафиг тогда оно вообще не нужно?!1



Это означает лишь то, что у автора кривые руки. Я разработал на питоне (django) веб сервис, который 1.000.000 пользователей держит на ура и почему-то у меня не возникало таких криворуких проблем, как опечатки. А еще, к сведению автора, есть такое понятие как DEV и PROD. Это для тех, кто делает энтерпрайз, а не поделки. И пока приложение не будет протестировано на 100%, оно в прод не поступает

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

Не, ну я, конечно, не фанат Питона, но тесты-то писать на любом языке надо! Думаю, до ядерного реатора вас просто не допустят.

Полностью с вами согласен. ubuntulover слишком слабый программист, чтоб его допустили к такой работе. он ведь в hello world допустит опечатку и потом будет долго и нудно ее дебажить

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

А вообще в таких случаях очень советуют ознакомиться с парадоксом Blub.

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

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

на чернобыльской атомной видимо последователи вашей религии работали. тоже захотелось протестировать на 100%

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

Ну, замыкания в Паскале кагбэ давно имеются, но такое страшное слово «настоящие программисты на ассемблере и паскале» вряд ли знают, не пугайте их. ;-)

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

На самом деле внутри процедур и функций давно можно было объявлять процедуры и функции, которые могут обращатся к локальным переменным этой функции. Их удобно использовать внутри, но передавать как результат вычисления нет смысла, так как они используют один из регистров проца как указатель на фрагмент стека в котором эти локальные переменные находятся а при выходе из функции то что в стеке уже не имеет значения.

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

Упоминание о замыканиях в Паскале я встретил в книге Джефа Элджера «С++ for real programmers». Он там расписывал, что единственная вкусность паскаля доступна и в С++, показал, как делать аналоги замыканий.

Код паскалевский примерно такой был:

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

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

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

> А еще, к сведению автора, есть такое понятие как DEV и PROD. Это для тех, кто делает энтерпрайз, а не поделки. И пока приложение не будет протестировано на 100%, оно в прод не поступает

И в чём смысл твоего комментария? Я что, против? Я как раз про это говорю — про тестирование. Если в нормалььных языках с нормальной статической типизацией подобное решится ещё на стадии компиляции, то в пейтоне придётся к серверу (повторюсь: «во время тестирования», если ты ешё не понял) >9000 раз подключиться и отлавливать баги во время рантайма, пока все ошибки не будут проверены, а это лишний пот и слёзы. ХЗАчем это надо? Не вижу профита утиной типизации.

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

На 100% приложение протестировано быть не может, иначе не было бы такого понятия, как «баг». Цимес в том, что пейтон и динамика увеличивают потенциальное количество багов -> больше падений и негодований

и почему-то у меня не возникало таких криворуких проблем, как опечатки.

печатаешь медленно? :)

Я разработал на питоне (django) веб сервис, который 1.000.000 пользователей держит на ура

ссылку кинешь?

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

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

А этим все реализации паскаля страдали?

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

>а ЧТО если я буду писать приложение ПО УПРАВЛениЮ кардиостимулятором

А хочешь поржать? Софт для некоторых кардиостимуляторов на VB пишется. Сюпрайз? Отож, и тебе не хворать )))))))

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

>печатаешь медленно? :)

Вообще то считается, что имплементация на Питоне до 10 раз компактнее, нежели аналогичная в плюсах или жабке. Так что быстропечатание увы не в твою пользу.

Да и ваще, в сочетании с твоим пристрастием у убунте, это все кагбэ намекает.... ))))

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

>Для обучения основам программирования статейка пригодна?

Ее никто не читал. Главное потролить же о том чего не понимаешь. Кулхацкеры пересаживаясь с плюсов/похапе и других правильных языков начинают хардкодить на питоне, а потом возмущаются, отчего же ничего не работает. А не работает потому, что сначала надо вникнуть в язык и понять его лаконичность.

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

> на чернобыльской атомной видимо последователи вашей религии работали. тоже захотелось протестировать на 100%

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

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

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

хотел нахамить, но 4 звезды. тогда по порядку. чем он тебе быдловат?

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

> ну не осилил - так и скажи, нечего прятаться за отмазками

ха-ха, «не осилил» — это стандартная отмазка тролля, когда потроллить хочется, а сказать нечего

а ведь и правда не осилил, да? :)

давай я тоже построю свою библиотеку, полную недоразумений, хаков и дебилизма, и заставлю тебя её учить, а если скажешь свою «фу, какая мерзость», також скажу «не осилил!»

сперва добейся (с) :)

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

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

чтобы генерить можно было на лету

Вот тут вот поподробнее. Что значит «генерить на лету» в плане ГУЯ? Чего здесь не могут неинтерпретируемые системы?

Да всё впринципе могут, только с интерпретируемыми оно проще, т.к. неинтерпретируемые языки имеют тенденцию «вкомпилировывать» всё раз и навсегда и не париться (выбора тут у них нет). Это не означает что на них нельзя решить задачу динамической генерации форм, просто для этого придётся писать вспомогательный инструмент, между тем как в интерпретериуемых он уже есть.

И да, практически все высокоуровневые языки в наше время интерпретируемые.

И да, python не самый первый парень на деревне в гуестроении.

Тем более что умные дяди давно уже знают, что ГУЙ должен храниться и извлекаться из XML-подобных файлов, а типизация и «высокоуровневость» системы исполнения тут уже побоку

это и «мелкософту» понятно :)

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

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

ээээ, что ж вы за вещества то употребляете? GUI - не является частью кода.

A graphical user interface (GUI) is a type of user interface item that allows people to interact with programs in more ways than typing such as computers; hand-held devices such as MP3 Players, Portable Media Players or Gaming devices; household appliances and office equipment with images rather than text commands. A GUI offers graphical icons, and visual indicators, as opposed to text-based interfaces, typed command labels or text navigation to fully represent the information and actions available to a user. The actions are usually performed through direct manipulation of the graphical elements.

смотреть тут

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

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

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

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



помоему по смыслу Пайтон больше похож на Javascript?

(также вездесущие замыкания, также объектность вся и в всего (любого идентификатора и любого выражения) )


на Васик похож только тем что «\n» вместо ";" ... или ещё сходства?

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

>Почему сейчас гуи (а частенько и логика программы) на интерпретируемом питоне считаются Ъ - ума не приложу.

Потому, что упал уровень знаний программиста. Зачем писать на с/спп или паскале если можно написать на питоне или джаве? Если бы сегодня еще и подогнали вот тот старый бейсик - так тут все бы на него ломанулись. Я уж об асемвблере не говорю вообще. Для многих это вообще тарабарский язык.

Некоторые привыкли тыкать мышкой и даже не представляют сопоставимость скорости работы интерпретатора команд в процессоре и интерпретатора бит-кода в памяти. О рас-кас тут даже вообще никто не слышал.

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

Посмотрел бы я на Вас как Вы в очередной (10-й, 100-й) раз строите gui на асме. :) Уверяю, плюнули бы.

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

>чтобы генерить можно было на лету

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

А я нигде и не говорил что нельзя :) вопрос был про интерпретируемые языки. Более того и в java и в mono гуестроительная часть удобнее.

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

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

на чернобыльской атомной видимо последователи вашей религии работали. тоже захотелось протестировать на 100%

ололо, по технологии и истории двойки, садитесь

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

> на яву нее. там другой уровень дебилизма

яваСКРИПТже а не ява (в яве то замыканий поменьше [или вообще нет?] , и они там вообще не решают)

хотя согласин что в Javascript опеределённый уровень [уникального] дибилизма есть :-) .. а финтиплюшек то уж точно явно меньше чем в Пайтоне

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

usr/lib/python*.* рулит. а если чего и нет то man __init__.py && man module.py

python и glade xml наше всьо) ну или bash+zenity для особо ленивых

эммм, не вполне понял как это связано с сообщением на которое Вы ответили. :)

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

>Меня убило вот это var procedure

Тут похоже всего навсего пустой раздел с переменными, паскалисты привыкли его прописывать чтобы потом не забыть.

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

> А я нигде и не говорил что нельзя :) вопрос был про интерпретируемые языки. Более того и в java и в mono гуестроительная часть удобнее.

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

..но когда мне приходилось пробовать Java и C# — GUI строить можно было:

1. либо через код программы
2. либо через IDE, который в конечном итоге генерировал опятьже — код программы :-D

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

...который создаёт GUI в отдельном XML-файле (которые «прикрепяется» к коду) в поощрение Model-View-Controller ?

mkfifo
()
Ответ на: комментарий от X-Pilot

>2) unittesting is good :)

И какие фреймворки для юнит-тестирования в Python есть?

будете смеяться: unittest, прямо «искаропки» :) пишем import unittest и наслаждаемся

а ще, есть over 9k всяческих mock'еров

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

>А этим все реализации паскаля страдали?

Насчёт делфи ньюансов не знаю (да и не интересно мне уже).

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

оч просто) если вернуться к комменту //ubuntulover 19.01.2010 23:37:10/, все станет ясно. я к тому что стандартные библиотеки в питоне удобны :)

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

когда мне приходилось пробовать Java и C# — GUI строить можно было:

1. либо через код программы 2. либо через IDE, который в конечном итоге генерировал опятьже — код программы :-D

в mono не помню в xml идёт или нет, не знаю как в java но что-то подсказывает что там всё правильно сделано

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

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

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

...который создаёт GUI в отдельном XML-файле (которые «прикрепяется» к коду) в поощрение Model-View-Controller ?

Сейчас все более или менее вменяемые конторы так делают. Про круче/не круче не могу сказать glide не юзал.

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

оч просто) если вернуться к комменту //ubuntulover 19.01.2010 23:37:10/, все станет ясно.

ыыыыы... :)

я к тому что стандартные библиотеки в питоне удобны :)

вот тут +1

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

> Про круче/не круче не могу сказать glide не юзал.

впринцепе да — думаю этот момент назвать спорным — можно :-) ..

..иногда такой подход «рисования GUI в не программном коде» — может упроситить, но приму такую веротность что иногда это быть может и наоборот создаст дополнительную преграду.

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