Осваиваем Python по-быстрому

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 14939
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Осваиваем Python по-быстрому

Непрочитанное сообщение Olej » 26 авг 2013, 09:50

Olej писал(а):Есть и ещё одна тема, заслуживающая совершенно отдельной темы рассмотрения: Python и графика, Python и создание GUI приложений...
Но это уже на потом, на десерт :lol: ...
"Сон в руку" ;-) : ... а вечером приходит уведомление о свежем курсе ИНТУИТ:
Опубликован курс "Разработка компьютерных игр с помощью Python и Pygame"
This course will teach you how to make graphical computer games with the Pygame framework (also called the Pygame library) in the Python programming language. Pygame makes it easy to create programs with 2D graphics.
The course starts with a short introduction to how the Pygame library works and the functions it provides. Then it provides the complete source code for some actual games and explains how the code works, so you can understand how actual game programs make use of Pygame.
P.S. Этот курс был анонсирован и раньше, но на месте его ссылки было пустое место, и писалось "... готовится ...".

P.P.S.
Изображение
Мне не сильно понятно, почему курсы университета, который подписывается как "национальный" должны быть на английском языке? ;-) ... Но это не так важно...

Аватара пользователя
Olej
Писатель
Сообщения: 14939
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Осваиваем Python по-быстрому

Непрочитанное сообщение Olej » 05 сен 2013, 12:31

Olej писал(а): Здесь мельком затронут такой вопрос, что Python может использоваться в очень разных качествах, в разных классах задач, например таких как:
...
- WEB-программирование с использованием Python
...
Это настолько разные по используемым инструментарию и приёмам области, что разработчик в одной их них может просто не понимать разработчика в другой, например: WEB-разработка и создание модулей расширения к FreeSWITCH ... общим остаётся только синтаксис используемого языка.
Вот ещё одна ветвь Python, которая требует отдельной ветви обсуждения, которую нужно тоже вынести отсюда, из общего потока обсуждения.
И вот такая тема: Python в разработке WEB-приложений + Django

Аватара пользователя
Olej
Писатель
Сообщения: 14939
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Осваиваем Python по-быстрому

Непрочитанное сообщение Olej » 06 сен 2013, 15:02

Olej писал(а): Здесь мельком затронут такой вопрос, что Python может использоваться в очень разных качествах, в разных классах задач, например таких как:
- отдельные приложения (скрипты, командные файлы) выполняющиеся в консольном режиме или вообще без вывода на терминал ... утилиты операционной системы, которые могут быть заменой подобным скриптам на bash, perl, awk, ruby и т.д.
- самодостаточные крупные проекты ... примером может быть тот же Open Stack, полностью ведущиеся на Python
- плагины к крупным проектам (на C/C++) выполняющие задачи конфигурирования, настройки ... пример - проект VoIP телефонного коммутатора FreeSWITCH, использующего для быстрого написания рутинных процедур встроенные интерпретирующие языки JavaScript, Lua, Python (связь C-кода с Python).
- WEB-программирование с использованием Python
- создание для Python специализированных модулей C/C++ (тоже ещё раз связь C-кода с Python ... но уже "в другую сторону").
- создание приложений Python с графическим интерфейсом (GUI) ... интерфейсы к графическим фреймвёркам

Это настолько разные по используемым инструментарию и приёмам области, что разработчик в одной их них может просто не понимать разработчика в другой, например: WEB-разработка и создание модулей расширения к FreeSWITCH ... общим остаётся только синтаксис используемого языка.
Теперь в 2 слова о функциональном программировании в Python. Конечно, функциональное программирование - это не "классах задач", оно не может стоять в ряду цитируемого перечисления, это - стиль, манера написания вашего программного кода, которые вы по желанию можете использовать или не использовать ... работая в любом из этих классов задач. Функциональное программирование на Python уже вскользь обсуждалось совсем в другой теме, вот с этого места примерно: Python.
И там же дальше было так:
Виктория писал(а):А чем может помочь простому программисту-труженику функциональное программирование? Изучив эту очередную парадигму, а автоматизации своего труда может и не научишься...
Функциональное программирование может помочь "простому программисту-труженику" в том, чтобы писать программные фрагменты без ошибок. В том и фокус, что при прочих равных, фрагмент кода, выписанный в функциональном стиле будет содержать в разы меньше ошибок! Но только на C, C++, Java, PASCAL и т.д. в таком стиле не попишешь ... я уже не говорю о C#, Visual Basic и другой всякой дряни ;-) .

Но здесь тоже есть крайности. О функциональном программировании в Python много (даже слишком много) рассуждений по Интернет. Но все они исходят, собственно, из 3-х - 4-х статей одного автора - Д.Мерц, этот материал есть и на IBM (но с чудовищной! разметкой листингов - или это никто не читает?) ... где кое-что переведено, а кое-что в оригинале:
http://www.ibm.com/developerworks/ru/library/l-prog/
http://www.ibm.com/developerworks/ru/library/l-prog2/
http://www.ibm.com/developerworks/linux ... index.html
http://www.ibm.com/developerworks/ru/library/l-pycon/
Всё это 2007г. или что-то около того. ... А дальше пошли, по преимуществу, пересказки ;-)

Но Python явно не язык функционального программирования. язык функционального программирования[/b]. Язык функционального программирования - это Lisp, Planner, ... из свежих Scala, Haskell, ... На Python только можно использовать приёмы функционального программирования в общем потоке императивного (командного) потока Python-кода. Т.е. "сворачивать" отдельные фрагменты кода (временами большие) в функциональные выражения.

Аватара пользователя
Olej
Писатель
Сообщения: 14939
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Осваиваем Python по-быстрому

Непрочитанное сообщение Olej » 06 сен 2013, 15:25

Olej писал(а):На Python только можно использовать приёмы функционального программирования в общем потоке императивного (командного) потока Python-кода. Т.е. "сворачивать" отдельные фрагменты кода (временами большие) в функциональные выражения.
Например, как простейший пример ... мне очень нравится (использовать) вот такое получение параметра из команды в консольную программу:

Код: Выделить всё

from sys import *
arg = lambda : ( len( argv ) > 1 and int( argv[ 1 ] ) ) or \
                 int( input( "число?: " ) )
n = arg()
(вы можете и промежуточное присвоение n исключить, хотя здесь это только синонимическая замена).
Что в этом фрагменте сказано? Что если в команде задан числовой параметр, то нужно его и использовать, а если не задан, то нужно в диалоге попросить у пользователя это число. И это мне приятнее, чем выписывать:

Код: Выделить всё

if len( sys.argv ) > 1:
    n = int( sys.argv[ 1 ] )
else:
    n = int( input( "число?: " ) )
Или вычисление факториала:

Код: Выделить всё

factorial = lambda x: ( ( x == 1 ) and 1 ) or x * factorial( x - 1 )
print( factorial( 5 ) ) 
Или даже так ;-) :

Код: Выделить всё

factorial = lambda z: reduce( lambda x, y: x * y, range( 1, z + 1 ) )
print( factorial( 5 ) ) 

Аватара пользователя
Olej
Писатель
Сообщения: 14939
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Осваиваем Python по-быстрому

Непрочитанное сообщение Olej » 06 сен 2013, 19:06

Olej писал(а): Или даже так ;-) :
Вот полный текст программы, записанный 1-м функциональным выражением (здесь и ввод, и вывод, анализ условного выражения, и вычисления...):

Код: Выделить всё

from sys import *
from functools import reduce

print( 'вычисленный факториал = {}'.format( \
         ( lambda z: reduce( lambda x, y: x * y, range( 1, z + 1 ) ) ) \
             ( ( lambda : ( len( argv ) > 1 and int( argv[ 1 ] ) ) or int( input( "число?: " ) ) )() )
                                          ) )
И вот как это выглядит:

Код: Выделить всё

bash-4.2$ ./fact4.py 7
вычисленный факториал = 5040

bash-4.2$ ./fact4.py
число?: 7
вычисленный факториал = 5040
Python 3 :

Код: Выделить всё

bash-4.2$ python3 fact4.py 7
вычисленный факториал = 5040
Вложения
functional.tgz
(21.44 КБ) 505 скачиваний

Аватара пользователя
Olej
Писатель
Сообщения: 14939
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Осваиваем Python по-быстрому

Непрочитанное сообщение Olej » 08 сен 2013, 22:40

Ещё один вопрос, который задают приступающие к использованию Python: в какой среде (или IDE) редактировать коды и отрабатывать Python-приложения?
Таких великое множество! Я уже перечислял некоторые:
Olej писал(а): Интегрированные среды :
Codimension Python IDE
Экспериментальная среда проектирования для языка Python.
DrPython
Удобная среда разработки для языка Python, написанная на нем же и использующая библиотеку wxWidgets.
Eric
Eric — это свободно распространяемая интегрированая среда разработки для языков Python и Ruby.
gEcrit
gEcrit - легковесная среда разработки на языке Python. Основная цель, которую преследует разработчик: простота и легкость в использовании.
IDLE
IDLE – это среда разработки программного обеспечения для Python.
Panda 3D
Panda3D - это кроссплатформенный игровой движок - фреймворк для трёхмерной визуализации и разработки игр на языках Python и C++, включающий работу с 2d/3d графикой, звуком, сетью, устройствами ввода (мышь, клавиатура, джойстик и т.п.), физикой на базе ODE и многими другими вещами, требующимися при разработке игры.
Pyramid
Pyramid - это фреймворк для создания веб-приложений на языке Python. Создан в результате объединения проектов repoze.bfg и Pylons.
Пользуйте любую среду по вкусу!
Хотя, в принципе, как по мне, то достаточно просто хорошего редактора с хорошей синтаксической раскраской кода. И такой редактор - Geany:
Изображение

Аватара пользователя
Olej
Писатель
Сообщения: 14939
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Осваиваем Python по-быстрому

Непрочитанное сообщение Olej » 08 сен 2013, 22:59

Olej писал(а): IDLE
IDLE – это среда разработки программного обеспечения для Python.
В большинстве публикаций и книг упоминается работа (и показываются примеры) именно в IDLE.
Но IDLE - это среда, чуть более развитая чем простой редактор, о она используется только в WIndows (просто потому, что инсталлируется там вместе с установкой Python).
Где-то показывались ссылки на IDLE под Linux ... , но там оно ещё вдвойне убогое.

Аватара пользователя
Olej
Писатель
Сообщения: 14939
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Осваиваем Python по-быстрому

Непрочитанное сообщение Olej » 08 сен 2013, 23:09

Olej писал(а):Где-то показывались ссылки на IDLE под Linux ... , но там оно ещё вдвойне убогое.
А вот (подсказали) - совершенно прелестнейшая штучка: Reinteract.
Это не совсем среда разработки, это среда быстрого экспериментирования.
Есть реализации практически для всех операционных систем.
В исходном коде можно скачать здесь.

Код: Выделить всё

29 Oct 2011 - Reinteract 0.5.9 released
26 Mar 2009 - Reinteract 0.5.0 released
Но это и необязательно делать, см. на сайте:
Reinteract is available through the package repositories for Fedora and other major Linux distributions. It’s also very easy to get the latest version of Reinteract from source control.
Так что можно устанавливать пакетом из репозитария вашего любимого дистрибутива:

Код: Выделить всё

bash-4.2$ sudo yum install reinteract
...
Объем загрузки: 300 k
Объем изменений: 1.3 M
...
Установлено:
  reinteract.noarch 0:0.5.9-4
Приятно удивляют размеры устанавливаемого.

Код: Выделить всё

bash-4.2$ which reinteract
/usr/bin/reinteract
В Reinteract вы пишете фрагменты кода Python, и тут же смотрите результаты его выполнения...
Вложения
reinteract.1.png
reinteract.2.png

Ali
Писатель
Сообщения: 57
Зарегистрирован: 08 окт 2011, 08:00
Контактная информация:

Re: Осваиваем Python по-быстрому

Непрочитанное сообщение Ali » 09 сен 2013, 16:42

Для любителей eclipse есть плагин PyDev -- http://pydev.org/download.html
Ставить его следует через менеджер расширений eclips`а.
RLs for PyDev as Eclipse plugin

Urls to use when updating with the Eclipse update manager:

Main:

http://pydev.org/updates

Nightly builds:

http://pydev.org/nightly
Вложения
pydev_eclipse.png

Аватара пользователя
Olej
Писатель
Сообщения: 14939
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Осваиваем Python по-быстрому

Непрочитанное сообщение Olej » 18 сен 2013, 14:43

Olej писал(а): Здесь есть ещё часто задаваемый вопрос: какую версию устанавливать - 2.Х или 3.Х?
- 2.Х является массово используемой в существующих проектах и приложениях...
- 3.Х - свежая, следующий шаг ... но для неё адаптировано совсем не так много модулей и пакетов...
Новый материал, "причёсанный" в виде связного текста, на темы: версии Python, вопросы совместимости, как писать совместимый код и т.п. - выложен вот здесь: Версии и совместимость.

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя