Тарифы Услуги Сим-карты

Введение в программирование на языке Python. Синтаксис языка Python

Синтаксис языка Python, как и сам язык, очень прост.

Синтаксис

    Конец строки является концом инструкции (точка с запятой не требуется).

    Вложенные инструкции объединяются в блоки по величине отступов. Отступ может быть любым, главное, чтобы в пределах одного вложенного блока отступ был одинаков. И про читаемость кода не забывайте. Отступ в 1 пробел, к примеру, не лучшее решение. Используйте 4 пробела (или знак табуляции, на худой конец).

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

    Основная инструкция : Вложенный блок инструкций

Несколько специальных случаев

  • Иногда возможно записать несколько инструкций в одной строке, разделяя их точкой с запятой:

    a = 1 ; b = 2 ; print (a , b )

    Но не делайте это слишком часто! Помните об удобочитаемости. А лучше вообще так не делайте.

    Допустимо записывать одну инструкцию в нескольких строках. Достаточно ее заключить в пару круглых, квадратных или фигурных скобок:

    if (a == 1 and b == 2 and c == 3 and d == 4 ): # Не забываем про двоеточие print ("spam" * 3 )
  • Тело составной инструкции может располагаться в той же строке, что и тело основной, если тело составной инструкции не содержит составных инструкций. Ну я думаю, вы поняли:). Давайте лучше пример приведу.

В которой, в сжатой форме,
рассказывают об основах языка Python. Я предлагаю вам перевод этой статьи. Перевод не дословный. Я постарался подробнее объяснить некоторые моменты, которые могут быть непонятны.

Если вы собрались изучать язык Python, но не можете найти подходящего руководства, то эта
статья вам очень пригодится! За короткое время, вы сможете познакомиться с
основами языка Python. Хотя эта статья часто опирается
на то, что вы уже имеете опыт программирования, но, я надеюсь, даже новичкам
этот материал будет полезен. Внимательно прочитайте каждый параграф. В связи с
сжатостью материала, некоторые темы рассмотрены поверхностно, но содержат весь
необходимый метриал.

Основные свойства

Python не требует явного объявления переменных, является регистро-зависим (переменная var не эквивалентна переменной Var или VAR - это три разные переменные) объектно-ориентированным языком.

Синтаксис

Во первых стоит отметить интересную особенность Python. Он не содержит операторных скобок (begin..end в pascal или {..}в Си), вместо этого блоки выделяются отступами : пробелами или табуляцией, а вход в блок из операторов осуществляется двоеточием. Однострочные комментарии начинаются со знака фунта «#», многострочные - начинаются и заканчиваются тремя двойными кавычками «"""».
Чтобы присвоить значение пременной используется знак «=», а для сравнения -
«==». Для увеличения значения переменной, или добавления к строке используется оператор «+=», а для уменьшения - «-=». Все эти операции могут взаимодействовать с большинством типов, в том числе со строками. Например


>>> myvar = 3
>>> myvar += 2
>>> myvar -= 1
""«Это многострочный комментарий
Строки заключенные в три двойные кавычки игнорируются»""

>>> mystring = «Hello»
>>> mystring += " world."
>>> print mystring
Hello world.
# Следующая строка меняет
значения переменных местами. (Всего одна строка!)

>>> myvar, mystring = mystring, myvar

Структуры данных

Python содержит такие структуры данных как списки (lists), кортежи (tuples) и словари (dictionaries ). Списки - похожи на одномерные массивы (но вы можете использовать Список включающий списки - многомерный массив), кортежи - неизменяемые списки, словари - тоже списки, но индексы могут быть любого типа, а не только числовыми. "Массивы" в Python могут содержать данные любого типа, то есть в одном массиве может могут находиться числовые, строковые и другие типы данных. Массивы начинаются с индекса 0, а последний элемент можно получить по индексу -1 Вы можете присваивать переменным функции и использовать их соответственно.


>>> sample = , («a» , «tuple» )] #Список состоит из целого числа, другого списка и кортежа
>>> #Этот список содержит строку, целое и дробное число
>>> mylist = «List item 1 again» #Изменяем первый (нулевой) элемент листа mylist
>>> mylist[-1 ] = 3 .14 #Изменяем последний элемент листа
>>> mydict = {«Key 1» : «Value 1» , 2 : 3 , «pi» : 3 .14 } #Создаем словарь, с числовыми и целочисленным индексами
>>> mydict[«pi» ] = 3 .15 #Изменяем элемент словаря под индексом «pi».
>>> mytuple = (1 , 2 , 3 ) #Задаем кортеж
>>> myfunction = len #Python позволяет таким образом объявлять синонимы функции
>>> print myfunction(list )
3

Вы можете использовать часть массива, задавая первый и последний индекс через двоеточие «:». В таком случае вы получите часть массива, от первого индекса до второго не включительно. Если не указан первый элемент, то отсчет начинается с начала массива, а если не указан последний - то масив считывается до последнего элемента. Отрицательные значения определяют положение элемента с конца. Например:


>>> mylist = [«List item 1» , 2 , 3 .14 ]
>>> print mylist[:] #Считываются все элементы массива
["List item 1" , 2 , 3 .1400000000000001 ]
>>> print mylist #Считываются нулевой и первый элемент массива.
["List item 1" , 2 ]
>>> print mylist[-3 :-1 ] #Считываются элементы от нулевого (-3) до второго (-1) (не включительно)
["List item 1" , 2 ]
>>> print mylist #Считываются элементы от первого, до последнего

Строки

Строки в Python обособляются кавычками двойными «"» или одинарными «"» . Внутри двойных ковычек могут присутствовать одинарные или наоборот. К примеру строка «Он сказал "привет"!» будет выведена на экран как «Он сказал "привет"!». Если нужно использовать строку из несколько строчек, то эту строку надо начинать и заканчивать тремя двойными кавычками «"""». Вы можете подставить в шаблон строки элементы из кортежа или словаря. Знак процента «%» между строкой и кортежем, заменяет в строке символы «%s» на элемент кортежа. Словари позволяют вставлять в строку элемент под заданным индексом. Для этого надо использовать в строке конструкцию «%(индекс)s». В этом случае вместо «%(индекс)s» будет подставлено значение словаря под заданным индексом.


>>>print «Name: %s\nNumber: %s\nString: %s» % (myclass .name, 3 , 3 * "-" )
Name: Poromenos
Number: 3
String: -
strString = ""«Этот текст расположен
на нескольких строках»""

>>> print «This %(verb)s a %(noun)s.» % {«noun» : «test» , «verb» : «is» }
This is a test.

Операторы

Операторы while, if , for составляют операторы перемещения. Здесь нет аналога оператора select, так что придется обходиться if . В операторе for происходит сравнение переменной и списка . Чтобы получить список цифр до числа - используйте функцию range(). Вот пример использования операторов


rangelist = range (10 ) #Получаем список из десяти цифр (от 0 до 9)
>>> print rangelist
for number in rangelist: #Пока переменная number (которая каждый раз увеличивается на единицу) входит в список…
# Проверяем входит ли переменная
# numbers в кортеж чисел (3 , 4 , 7 , 9 )
if number in (3 , 4 , 7 , 9 ): #Если переменная number входит в кортеж (3, 4, 7, 9)...
# Операция «break » обеспечивает
# выход из цикла в любой момент
break
else :
# «continue » осуществляет «прокрутку»
# цикла. Здесь это не требуется, так как после этой операции
# в любом случае программа переходит опять к обработке цикла
continue
else :
# «else » указывать необязательно. Условие выполняется
# если цикл не был прерван при помощи «break ».
pass # Ничего не делать

if rangelist == 2 :
print «The second item (lists are 0-based) is 2»
elif rangelist == 3 :
print «The second item (lists are 0-based) is 3»
else :
print «Dunno»

while rangelist == 1 :
pass

Функции

Для объявления функции служит ключевое слово «def » . Аргументы функции задаются в скобках после названия функции. Можно задавать необязательные аргументы, присваивая им значение по умолчанию. Функции могут возвращать кортежи, в таком случае надо писать возвращаемые значения через запятую. Ключевое слово «lambda » служит для объявления элементарных функций.


# arg2 и arg3 - необязательые аргументы, принимают значение объявленное по умолчни,
# если не задать им другое значение при вызове функци.
def myfunction(arg1, arg2 = 100 , arg3 = «test» ):
return arg3, arg2, arg1
#Функция вызывается со значением первого аргумента - "Argument 1", второго - по умолчанию, и третьего - "Named argument" .
>>>ret1, ret2, ret3 = myfunction(«Argument 1» , arg3 = «Named argument» )
# ret1, ret2 и ret3 принимают значения "Named argument", 100, "Argument 1" соответственно
>>> print ret1, ret2, ret3
Named argument 100 Argument 1

# Следующая запись эквивалентна def f(x): return x + 1
functionvar = lambda x: x + 1
>>> print functionvar(1 )
2

Классы

Язык Python ограничен в множественном наследовании в классах. Внутренние переменные и внутренние методы классов начинаются с двух знаков нижнего подчеркивания «__» (например «__myprivatevar»). Мы можем также присвоить значение переменной класса извне. Пример:


class Myclass :
common = 10
def __init__(self ):
self .myvariable = 3
def myfunction(self , arg1, arg2):
return self .myvariable

# Здесь мы объявили класс Myclass . Функция __init__ вызывается автоматически при инициализации классов.
>>> classinstance = Myclass () # Мы инициализировали класс и переменная myvariable приобрела значение 3 как заявлено в методе инициализации
>>> #Метод myfunction класса Myclass возвращает значение переменной myvariable
3
# Переменная common объявлена во всех классах
>>> classinstance2 = Myclass ()
>>> classinstance.common
10
>>> classinstance2.common
10
# Поэтому, если мы изменим ее значение в классе Myclass изменятся
# и ее значения в объектах, инициализированных классом Myclass
>>> Myclass.common = 30
>>> classinstance.common
30
>>> classinstance2.common
30
# А здесь мы не изменяем переменную класса. Вместо этого
# мы объявляем оную в объекте и присваиваем ей новое значение
>>> classinstance.common = 10
>>> classinstance.common
10
>>> classinstance2.common
30
>>> Myclass.common = 50
# Теперь изменение переменной класса не коснется
# переменных объектов этого класса
>>> classinstance.common
10
>>> classinstance2.common
50

# Следующий класс является наследником класса Myclass
# наследуя его свойства и методы, ктому же класс может
# наследоваться из нескольких классов, в этом случае запись
# такая: class Otherclass(Myclass1, Myclass2, MyclassN)
class Otherclass(Myclass):
def __init__(self , arg1):
self .myvariable = 3
print arg1

>>> classinstance = Otherclass(«hello» )
hello
>>> classinstance.myfunction(1 , 2 )
3
# Этот класс не имеет совйтсва test, но мы можем
# объявить такую переменную для объекта. Причем
# tэта переменная будет членом только class instance.
>>> classinstance.test = 10
>>> classinstance.test
10

Исключения

Исключения в Python имеют структуру try -except [except ionname]:


def somefunction():
try :
# Деление на ноль вызывает ошибку
10 / 0
except ZeroDivisionError :
# Но программа не "Выполняет недопустимую операцию"
# А обрабатывает блок исключения соответствующий ошибке «ZeroDivisionError»
print «Oops, invalid.»

>>> fnexcept ()
Oops, invalid.

Импорт

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


import random #Импортируем библиотеку «random»
from time import clock #И заодно функцию «clock» из библиотеки «time»

Randomint = random .randint(1 , 100 )
>>> print randomint
64

Работа с файловой системой

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


import pickle
mylist = [«This» , «is» , 4 , 13327 ]
# Откроем файл C:\binary.dat для записи. Символ «r»
# предотвращает замену специальных сиволов (таких как \n, \t, \b и др.).
myfile = file (r«C:\binary.dat» , «w» )
pickle .dump(mylist, myfile)
myfile.close()

Myfile = file (r«C:\text.txt» , «w» )
myfile.write(«This is a sample string» )
myfile.close()

Myfile = file (r«C:\text.txt» )
>>> print myfile.read()
"This is a sample string"
myfile.close()

# Открываем файл для чтения
myfile = file (r«C:\binary.dat» )
loadedlist = pickle .load(myfile)
myfile.close()
>>> print loadedlist
["This" , "is" , 4 , 13327 ]

Особенности

  • Условия могут комбинироваться. 1 < a < 3 выполняется тогда, когда а больше 1, но меньше 3.
  • Используйте операцию «del » чтобы очищать переменные или элементы массива .
  • Python предлагает большие возможности для работы со списками . Вы можете использовать операторы объявлении структуры списка. Оператор for позволяет задавать элементы списка в определенной последовательности, а if - позволяет выбирать элементы по условию.
>>> lst1 =
>>> lst2 =
>>> print
>>> print
# Оператор «any» возвращает true, если хотя
# бы одно из условий, входящих в него, выполняется.
>>> any(i % 3 for i in )
True
# Следующая процедура подсчитывает количество
# подходящих элементов в списке
>>> sum (1 for i in if i == 3 )
3
>>> del lst1
>>> print lst1
>>> del lst1
  • Глобальные переменные объявляются вне функций и могут быть прочитанны без каких либо объявлений. Но если вам необходимо изменить значение глобальной переменной из функции, то вам необходимо объявить ее в начале функции ключевым словом «global », если вы этого не сделаете, то Python объявит переменную, доступную только для этой функции.
number = 5

def myfunc():
# Выводит 5
print number

def anotherfunc():
# Это вызывает исключение, поскольку глобальная апеременная
# не была вызванна из функции. Python в этом случае создает
# одноименную переменную внутри этой функции и доступную
# только для операторов этой функции.
print number
number = 3

def yetanotherfunc():
global number
# И только из этой функции значение переменной изменяется.
number = 3

Эпилог

Разумеется в этой статье не описываются все возможности Python. Я надеюсь что эта статья поможет вам, если вы захотите и в дальнейшем изучать этот язык программирования.

Преимущества Python

  • Скорость выполнения программ написанных на Python очень высока. Это связанно с тем, что основные библиотеки Python
    написаны на C++ и выполнение задач занимает меньше времени, чем на других языках высокого уровня.
  • В связи с этим вы можете писать свои собственные модули для Python на C или C++
  • В стандартныx библиотеках Python вы можете найти средства для работы с электронной почтой, протоколами
    Интернета, FTP, HTTP, базами данных, и пр.
  • Скрипты, написанные при помощи Python выполняются на большинстве современных ОС. Такая переносимость обеспечивает Python применение в самых различных областях.
  • Python подходит для любых решений в области программирования, будь то офисные программы, вэб-приложения, GUI-приложения и т.д.
  • Над разработкой Python трудились тысячи энтузиастов со всего мира. Поддержкой современных технологий в стандартных библиотеках мы можем быть обязаны именно тому, что Python был открыт для всех желающих.

Теги: Добавить метки

Существует множество областей применения Python, но в некоторых он особенно хорош. Разбираемся, что же можно делать на этом ЯП.

Основные отличия:

  • Flask обеспечивает простоту, гибкость и полный контроль над проектом. Он позволяет пользователю самостоятельно решать, как реализовывать те или иные вещи.
  • Django – это сервис типа «все включено». Из коробки в нем уже есть админ-панель, интерфейсы баз данных, ORM (объектно-реляционное отображение) и структура каталогов для ваших проектов.

Что выбрать?

  • Выбирайте Flask, если хотите получить больше опыта и возможностей для обучения. Или в том случае, если вам нужен максимальный контроль над всеми используемыми компонентами, например, базами данных.
  • Выбирайте Django, если вас интересует конечный продукт. Особенно, если вы работаете с простыми приложениями, такими как новостной сайт, магазин, блог, и хотите, чтобы каждая задача решалась одним предельно ясным способом.

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

Flask из-за своей гибкости лучше подходит для создания REST API .

С другой стороны, если стоит задача сделать что-то просто и быстро, вероятно, стоит выбрать Django.

Data Science: машинное обучение, анализ данных и визуализация

Прежде всего, следует разобраться, что такое .

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

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

А здесь она должна увидеть стол.

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

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

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

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

Вы можете предложить алгоритму машинного обучения, скажем, 1000 изображений собаки и 1000 снимков столов. Он выучит разницу между этими объектами. Затем, когда вы дадите ему новую картинку со столом или собакой, он сможет определить, что именно на ней изображено.

  • scikit-learn из коробки имеет несколько встроенных популярных алгоритмов обучения;
  • TensorFlow – это более низкоуровневая библиотека. Она позволяет создавать пользовательские алгоритмы.

Новичкам в машинном обучении лучше начать со scikit-learn. Более опытным разработчикам, которые столкнулись с проблемами эффективности, стоит присмотреться к TensorFlow.

Как изучать машинное обучение?

Настоящие аналитики, например, в Google или Microsoft, делают то же самое, только их работа более сложная и комплексная.

Они используют язык запросов SQL, чтобы извлекать данные из баз. Затем для анализа и визуализации применяются специальные инструменты, например, Mathplotlib (для Python) или D3.js (для JavaScript).

Способы применения Python для анализа и визуализации данных

Одна из самых популярных библиотек для визуализации – Mathplotlib .

Новичкам следует начинать обучение с нее по двум причинам:

  • низкий порог вхождения;
  • освоение Mathplotlib позволит в будущем быстрее разобраться в более сложных библиотеках, основанных на ней, например, seaborn .

Как изучать анализ данных на Python?

С недавних пор некоторые компании начали использовать для создания настольных приложений JavaScript. Например, десктопное приложение Slack было создано с помощью JavaScript-фреймворка Electron .

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

Python 3 или Python 2

Python 3 – это более современный и популярный выбор.

Пояснение о backend- и frontend-коде

Предположим, вы хотите сделать нечто, напоминающее Инстаграм.

Какие программы написаны на Python?

Прикладное ПО для нормальных людей

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

BitTorrent

Все версии до 6 этого торрент-клиента были написаны на Python. Версия 6 была переписана на C++.

Ubuntu Software Center

Цитата из Википедии :
Центр приложений Ubuntu (англ. Ubuntu Software Center ) - свободное программное обеспечение для поиска, установки и удаления пакетов в системе Ubuntu Linux . в последних версиях возможна покупка журналов о Linux и Ubuntu , также можно приобретать платные игры и софт . Приложение разработано на языке Python + Vala с использованием библиотек GTK+ и является графической оболочкой для Advanced Packaging Tool .

Blender

Цитата из Википедии :
Blender - свободный, профессиональный пакет для создания трёхмерной компьютерной графики, включающий в себя средства моделирования, анимации, рендеринга, постобработки видео, а также создания интерактивных игр. В настоящее время пользуется наибольшей популярностью среди бесплатных 3D редакторов в связи с его быстрым и стабильным развитием, которому способствует профессиональная команда разработчиков.

Python используется как средство создания инструментов и прототипов, системы логики в играх, как средство импорта/экспорта файлов (например COLLADA), автоматизации задач.

Вот несколько страниц с документацией:

GIMP

Цитата из Википедии :
Python используется для написания дополнительных модулей, например, фильтров.
Вот несколько страниц, которые глубже раскрывают тему:

Игры

Civilization IV

Большая часть игры написана на Python ().

Battlefield 2

В сети Интернет есть много учебников и просто рецептов по изменению различных объектов и их поведения.

World of Tanks

Цитата из статьи " GUI в игре World of Tanks ":
В качестве скриптового языка в проекте используется Python. Всю красоту, которую мы сделали во Flash, нужно подключить в игре, наполнить данными, обработать и транслировать пользовательский ввод в реальные действия в игре. Все это как раз и делается в Python.
Более полный список игр, которые используют Python, можно найти в Википедии и документации к Python .

Какие компании используют Python?

Список компаний, которые используют Python, длинный. Среди них Google , Facebook , Yahoo , NASA , Red Hat , IBM , Instagram , Dropbox , Pinterest , Quora , Яндекс , Mail.Ru .

Яндекс

Вот, пожалуйста, доклад " Python в ядре Яндекс.Диска ". Сергей Иващенко (докладчик):
Я расскажу о том, как мы используем Python в Яндекс.Диске, какие применяем библиотеки и фреймворки, какие задачи решаем и с какими проблемами сталкиваемся. Также затрону тему логирования и обработки асинхронных операций.
В одном из видео на канале Яндекса, сотрудники рассказали о своих любимых языках.

А ещё в блоге компании Яндекс есть запись " На каких языках программирования пишут в Яндексе " от 19 марта 2014 года. Так вот, 13% сотрудников Яндекс большую часть рабочего времени пишут на языке Python.

Mail.ru

Сотрудники Mail.ru тоже используют Python. В официальном блоге Mail.ru на Хабре есть несколько статей о Python:

Google

В Google с самого основания активно использовали Python. Есть слухи, что большая часть YouTube и Google Drive написана на Python. Google разработал целую облачную платформу Google App Engine, чтобы разработчики могли запускать код на Python в облаке Google. Многие разработчики языка работали и работают в Google.

DropBox

Сервис разработан на языке Python. Не случайно сам автор языка Python, Гвидо ван Россум , работает в DropBox.

Другие компании

The organizations that use Python

В каких областях применяется Python?

Web-разработка

В этой области Python, пожалуй, используется больше всего. Веб-фреймворк Django продолжает набирать обороты, пополняя армию своих фанатов. Многие начинающие программисты даже думают, что Python больше нигде не используется. Но на Python написаны многие другие веб-фреймворки: Pylons , TurboGears , CherryPy , Flask , Pyramid и другие. С более полным списком можно ознакомится .
Есть и CMS на базе Django, она так и называется DjangoCMS .
Очень часто на Python пишут и парсеры сайтов. Обычно для этого используют Requests , aiohttp , BeautifulSoup , html5lib . Есть и более высокоуровневые инструменты для парсинга сайтов: Scrapy , Grab .

Системное администрирование

Python - это отличный язык для автоматизации работы системного администратора. Он установлен по умолчанию на все Linux-сервера. Он простой, понятный. Код на Python легко читается. Некоторые любят Perl, я тоже его люблю за удобную работу с регулярными выражениями, но я ненавижу Perl за его синтаксис. Bash удобен для относительно небольших и средних скриптов, но Python мощнее и в некоторых случаях позволяет писать намного меньше кода.
Единственный пакет, который я знаю, это Fabric . Возможно есть что-то ещё, напишите мне в комментариях, если знаете.

Дополнительная информация

Python for system administrators (IBM developerWorks)
Fabric documentation. Systems Administration.

Встроенные системы (embedded systems)

Очень часто Python используется для программирования встроенных систем. Самый известный проект, который использует Python - это Raspberry Pi. Но он не единственный:
Embedded Python
Raspberry Pi
Python Embedded Tools
The Owl Embedded Python System

Разработка прикладного ПО, в том числе игр

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

Научные исследования

Физики и математики очень любят Python за его простоту. Кроме того для Python существует огромное количество библиотек, облегчающих жизнь ученому. Например:
  1. SciPy - это открытая библиотека высококачественных научных инструментов для языка программирования Python. SciPy содержит модули для оптимизации, интегрирования, специальных функций , обработки сигналов , обработки изображений , генетических алгоритмов , решения обыкновенных дифференциальных уравнений и других задач, обычно решаемых в науке и при инженерной разработке.
  2. Matplotlib - библиотека на языке программирования Python для визуализации данных двумерной (2D) графикой (3D графика также поддерживается). Получаемые изображения могут быть использованы в качестве иллюстраций в публикациях.
  3. NumPy - это расширение языка Python, добавляющее поддержку больших многомерных массивов и матриц, вместе с большой библиотекой высокоуровневых математических функций для операций с этими массивами.
Более полный список библиотек для научных вычислений на языке Python можно найти в Википедии .

Обучение

Очень часто в качестве первого языка программирования советуют именно Python.
У некоторых российских школ есть успешный опыт обучения школьников программированию на языке Python.
Кстати, Гвидо ван Россум находился под впечатлением от языка ABC , когда писал Python. А язык ABC предназначался для обучения и прототипирования.

Критика языка Python

Python один из самых медленных языков программирования

В сети Интеренет можно найти много различных тестов скорости программ, написанных на разных языках программирования. Python обычно находится в конце списков.
Обычно под Python имеют в виду CPython, эталонную реализацию языка. Существуют другие реализации языка Python, например PyPy. PyPy обгоняет по скорости CPython и многие другие скриптовые языки программирования, очень близок по скорости к Java. Но есть одна проблема - в PyPy не полностью реализован язык Python, из-за этого многие Python-программы на нем не работают.
Многие программисты пишут вставки на C/C++, чтобы ускорить работу в узких местах. Python не предназначен для вычислительных задач, для задач, которые требуют много памяти (memory bound) и подобного. Нужно уметь выбирать подходящие инструменты для стоящих перед вами задач. Гвидо ван Россум говорит об этом в интервью .

GIL мешает одновременному выполнению нескольких потоков

Global Interpreter Lock не позволяет нескольким потокам Python выполняться одновременно. Это особенности CPython. Но недостаток ли это? Нужно понимать, что всё зависит от задачи. Если ваша задача зависит от скорости ввода-вывода (IO bound task), то эффективнее использовать несколько процессов, которые будут работать в асинхронном режиме с внешними ресурсами. А потоки с общей памятью хороши для вычислительных задач (CPU-bound). Но даже если вам нужна работа с потоками, то можно отключить GIL на время, так как это сделано в математическом пакет NumPy.

Нет хороших инструментов для дистрибуции

К сожалению код на Python, который имеет множество зависимостей от системных библиотек, сложно перенести на другие системы. Эту задачу решают с помощью virtualenv. но этот инструмент очень много критикуют системные администраторы.

Дополнительная информация

Python Success Stories
You Used Python to Write WHAT?
What is Python Used For?
More proof that it"s Python"s world and we"re just living in it
AVERAGE SALARY FOR JOBS REQUIRING PYTHON
List of Python software

Будучи удачно спроектированным языком программирования Python прекрасно подходит для решения реальных задач из разряда тех, которые разработчикам приходится решать ежедневно. Он используется в самом широком спектре применений - и как инструмент управления другими программными компонентами, и для реализации самостоятельных программ. Фактически круг ролей, которые может играть Python как многоцелевой язык программирования, практически не ограничен: он может использоваться для реализации

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

Однако сферу использования Python в настоящее время можно разбить на несколько широких категорий. Следующие несколько разделов описывают наиболее типичные области применения Python в наши дни, а также инструментальные средства, используемые в каждой из областей. У нас не будет возможности заняться исследованием инструментов, упоминаемых здесь. Если какие-то из них заинтересуют вас, обращайтесь на веб-сайт проекта Python за более

Системное программирование

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

многое другое.

Стандартная библиотека Python полностью отвечает требованиям стандартов POSIX и поддерживает все типичные инструменты операционных систем: переменные окружения, файлы, сокеты, каналы, процессы, многопоточную модель выполнения, поиск по шаблону с использованием регулярных выражений, аргументы командной строки, стандартные интерфейсы доступа к потокам данных, запуск команд оболочки, дополнение имен файлов и многое

Кроме того, системные интерфейсы в языке Python созданы переносимыми, например сценарий копирования дерева каталогов не требует внесения изменений, в какой бы операционной системе он ни использовался. Система Stackless Python, используемая компанией EVE Online, также предлагает улучшенные решения, применяемые для параллельной обработки данных.

Графический интерфейс

Простота Python и высокая скорость разработки делают его отличным средством разработки графического интерфейса. В состав Python входит стандартный объектно-ориентированный интерфейс к Tk GUI API, который называется tkinter(B Python 2.6 он называется Tkinter)t позволяющий программам на языке Python реализовать переносимый графический интерфейс с внешним видом, присущим операционной системе. Графические интерфейсы на базе Python/

tkinter без изменений могут использоваться в MS Windows, X Window (в one-рационных системах UNIX и Linux) и Mac OS (как в классической версии, так и в OS X). Свободно распространяемый пакет расширения PMW содержит дополнительные визуальные компоненты для набора tkinter. Кроме того, существует прикладной интерфейс wxPython GUI API, основанный на библиотеке C++, который предлагает альтернативный набор инструментальных средств построения переносимых графических интерфейсов на языке Python.

Инструменты высокого уровня, такие как PythonCard и Dabot построены на основе таких API, как wxPython и tkinter. При выборе соответствующей библиотеки вы также сможете использовать другие инструменты создания графического интерфейса, такие как Qt (с помощью PyQt), GTK (с помощью PyGtk), MFC (с помощью PyWin32), .NET (с помощью IronPython), Swing (с помощью Jython - реализации языка Python на Java, которая описывается в главе 2, или JPype). Для разработки приложений с веб-интерфейсом или не предъявляющих высоких требований к интерфейсу можно использовать Jython, веб-фреймворки на языке Python и CGI-сценарии, которые описываются в следующем разделе и обеспечивают дополнительные возможности по созданию пользовательского интерфейса.

Веб-сценарии

Интерпретатор Python поставляется вместе со стандартными интернет-модулями, которые позволяют программам выполнять разнообразные сетевые операции как в режиме клиента, так и в режиме сервера. Сценарии могут производить взаимодействия через сокеты, извлекать информацию из форм, отправленных серверным CGI-сценариям; передавать файлы по протоколу FTP; обрабатывать файлы XML; передавать, принимать, создавать и производить разбор

писем электронной почты; загружать веб-страницы с указанных адресов URL; производить разбор разметки HTML и XML полученных веб-страниц; производить взаимодействия по протоколам XML-RPC, SOAP и Telnet и многое другое.

Библиотеки, входящие в состав Python, делают реализацию подобных задач удивительно простым делом.

Кроме того, существует огромная коллекция сторонних инструментов для создания сетевых программ на языке Python, которые можно найти в Интернете. Например, система HTMLGen позволяет создавать HTML-страницы на основе описаний классов Python. Пакет mod_python предназначен для запуска сценариев на языке Python под управлением веб-сервера Apache и поддерживает шаблоны механизма Python Server Pages. Система Jython обеспечивает

бесшовную интеграцию Python/Java и поддерживает серверные апплеты, которые выполняются на стороне клиента.

Помимо этого для Python существуют полноценные пакеты веб-разработки, такие как Django, TurboGears, web2py, Pylons, Zope и WebWare, поддерживающие возможность быстрого создания полнофункциональных высококачественных веб-сайтов на языке Python. Многие из них включают такие возможности, как объектно-реляционные отображения, архитектура Модель/Представление/Контроллер (Model/View/Controller), создание сценариев, выполняющихся на стороне сервера, поддержка шаблонов и технологии AJAX, предоставляя

законченные и надежные решения для разработки веб-приложений.

Интеграция компонентов

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

системы на языке С и C++ делает его удобным и гибким языком для описания поведения других систем и компонентов. Например, интеграция с библиотекой на языке С позволяет Python проверять наличие и запускать библиотечные компоненты, а встраивание Python в программные продукты позволяет производить настройку программных продуктов без необходимости пересобирать эти продукты или поставлять их с исходными текстами.

Такие инструменты, как Swing и SIP, автоматически генерирующие программный код, могут автоматизировать действия по связыванию скомпилированных компонентов в Python для последующего их использования в сценариях, а система Cython позволяет программистам смешивать программный код на Python и С. Такие огромные платформы на Python, как поддержка СОМ

в MS Windows, Jython - реализация на языке Java, IronPython - реализация на базе.NET и разнообразные реализации CORBA, предоставляют альтернативные способы организации взаимодействий с программными компонентами. Например, в операционной системе Windows сценарии на языке Python могут использовать платформы управления такими приложениями, как MS Word и Excel.

Приложения баз данных

В языке Python имеются интерфейсы доступа ко всем основным реляционным базам данных - Sybase, Oracle, Informix, ODBC, MySQL, PostgreSQL, SQLite и многим другим. В мире Python существует также переносимый прикладной программный интерфейс баз данных, предназначенный для доступа к базам данных SQL из сценариев на языке Python, который унифицирует доступ к различным базам данных. Например, при использовании переносимого API сценарий, предназначенный для работы со свободной базой данных MySQL, практически без изменений сможет работать с другими системами баз данных (такими как Oracle). Все, что потребуется сделать для этого, - заменить используемый низкоуровневый интерфейс.

Стандартный модуль pickle реализует простую систему хранения объектов, что позволяет программам сохранять и восстанавливать объекты Python в файлах или в специализированных объектах. В Сети можно также найти систему, созданную сторонними разработчиками, которая называется ZODB.

Она представляет собой полностью объектно-ориентированную базу данных

для использования в сценариях на языке Python. Существуют также

инструменты, такие как SQLObject и SQLAlchemy, которые отображают

реляционные таблицы в модель классов языка Python. Начиная с версии Python 2.5,

стандартной частью Python стала база данных SQLite.

Быстрое создание прототипов

В программах на языке Python компоненты, написанные на Python и на С, выглядят одинаково. Благодаря этому можно сначала создавать прототипы систем на языке Python, а затем переносить выбранные компоненты на компили-рующие языки, такие как С и C++. В отличие от ряда других инструментов разработки прототипов, язык Python не требует, чтобы система была полностью переписана, как только прототип будет отлажен. Части системы, которые не требуют такой эффективности выполнения, какую обеспечивает C++, можно

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

Программирование математических

и научных вычислений

Расширение NumPy для математических вычислений, упоминавшееся выше, включает такие мощные элементы, как объекты массивов, интерфейсы к стандартным математическим библиотекам, и многое другое. Расширение NumPy - за счет интеграции с математическими библиотеками, написанными на компилирующих языках программирования - превращает Python в сложный, но удобный инструмент программирования математических вычислений, который зачастую может заменить существующий программный код, написанный на традиционных компилирующих языках, таких как FORTRAN и C++.

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

Игры, изображения, искусственный интеллект,

XML роботы и многое другое

Язык программирования Python можно использовать для решения более широкого круга задач, чем может быть упомянуто здесь. Например:

Создавать игровые программы и анимационные ролики с помощью

системы pygame

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

порт с помощью расширения PySerial

Обрабатывать изображения с помощью расширений PIL, PyOpenGL,

Blender, Maya и других

Управлять роботом с помощью инструмента PyRo

Производить разбор XML-документов с помощью пакета xml, модуля xmlrp-

clib и расширений сторонних разработчиков

Программировать искусственный интеллект с помощью эмулятора нейро-

сетей и оболочек экспертных систем

Анализировать фразы на естественном языке с помощью пакета NLTK.

Можно даже разложить пасьянс с помощью программы PySol. Поддержку многих других прикладных областей можно найти на веб-сайте PyPI или с помощью поисковых систем (ищите ссылки с помощью Google или на сайте http://www.python.org).

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

Кстати, у вас проблемы с блоком питания ноутбука? Советуем вам купить блоки питания для ноутбука по очень доступным ценам. На сайте компании darrom.com.ua вы найдете блоки питания для любого ноутбука.