|
|
(не показано 8 промежуточных версий 4 участников) |
Строка 1: |
Строка 1: |
− | '''Python''' современный, очень популярный, красивый, мощный и удобный интерпретируемый, расширяемый и встраиваемый, объектно-ориентированный язык (со множественным наследованием), включающий даже элементы функционального программирования. Т.е. это живой язык, активно использующийся для программирования как «обычных», пользовательских приложений, с переносимым оконным (см. например wxPython), или веб-приложений (см. например Zope). Растет его сфера использования в научных целях, для прототипирования и разработки новых алгоритмов, для анализа или визуализации данных (см. например [http://www.scipy.org Scientific Python]). | + | '''Python''' современный, очень популярный, красивый, мощный и удобный интерпретируемый, расширяемый и встраиваемый, объектно-ориентированный язык (со множественным наследованием), включающий даже элементы функционального программирования. То есть это живой язык, активно использующийся для программирования как «обычных», пользовательских приложений, с переносимым оконным (см. например wxPython), или веб-приложений (см. например Zope). Растет его сфера использования в научных целях, для прототипирования и разработки новых алгоритмов, для анализа или визуализации данных (см. например [http://www.scipy.org Scientific Python]). |
| Здесь, мы рассмотрим только базовые свойства синтаксиса, чтобы можно было устранить непонимание текстов, отдельных, не больше страничек, функций и процедур на Python, а за всем остальным, добро пожаловать на http://www.python.org. | | Здесь, мы рассмотрим только базовые свойства синтаксиса, чтобы можно было устранить непонимание текстов, отдельных, не больше страничек, функций и процедур на Python, а за всем остальным, добро пожаловать на http://www.python.org. |
| | | |
− | Здесь мы представим краткое введение в язык Python, в первую очередь для того, чтобы обеспечить однозначное понимание представленных на языке Python алгоритмов. | + | Здесь мы представим краткое введение в язык Python, в первую очередь для того, чтобы обеспечить однозначное понимание представленных на языке Python алгоритмов. |
| | | |
− | Вообще, трудно найти другой язык, одновременно пригодный для обучения с одной стороны, и достаточно мощный, для реализации реальных приложений (включая научные). Дело в том, что автор Питона (Guido van Rossum) долгое время участвовал в проекте создания языка обучения программированию ABC, который должен был заменить BASIC, и вынес из проекта несколько ценных идей, как минимизировать синтаксические накладные расходы, которые необходимы в реальном языке программирования (сложные декларации, открытия/закрытия блоков), избежав при этом каббалистического минимализма (доступных только адептам пониманию взаимодействия спецсимволов типа | + | Вообще, трудно найти другой язык, одновременно пригодный для обучения с одной стороны, и достаточно мощный, для реализации реальных приложений (включая научные). Дело в том, что автор Питона (Guido van Rossum) долгое время участвовал в проекте создания языка обучения программированию ABC, который должен был заменить BASIC, и вынес из проекта несколько ценных идей, как минимизировать синтаксические накладные расходы, которые необходимы в реальном языке программирования (сложные декларации, открытия/закрытия блоков), избежав при этом каббалистического минимализма (доступных только адептам пониманию взаимодействия спецсимволов типа |
| "<\@\%\$\^">) | | "<\@\%\$\^">) |
| в языках типа Perl. | | в языках типа Perl. |
Строка 21: |
Строка 21: |
| </code-python> | | </code-python> |
| | | |
− | Далее, все переменные в питоне являются однотипными ссылками на объекты. Таким образом, устраняется необходимость декларации переменных, переменная определяется в момент первого присваивания и тип хранимого в ней объекта может быть переопределен последующими присваиваниями. | + | Далее, все переменные в питоне являются однотипными ссылками на объекты. Таким образом, устраняется необходимость декларации переменных, переменная определяется в момент первого присваивания и тип хранимого в ней объекта может быть переопределен последующими присваиваниями. |
| | | |
| <code-python> | | <code-python> |
Строка 36: |
Строка 36: |
| Также, интерпретатор берет на себя все управление памятью (резервирование, сборка мусора и т. п.). | | Также, интерпретатор берет на себя все управление памятью (резервирование, сборка мусора и т. п.). |
| | | |
− | Непосредственно в язык встроенны не только примитивные типы данных, | + | Непосредственно в язык встроенны не только примитивные типы данных, |
− | как числа и строки, но и более сложные структуры: | + | как числа и строки, но и более сложные структуры: |
| Кортежи (touples): | | Кортежи (touples): |
| | | |
Строка 94: |
Строка 94: |
| | | |
| | | |
− | Оператор '''for''' имеет вид | + | Оператор '''for''' имеет вид |
| for некая_переменная in некий_диапазон : | | for некая_переменная in некий_диапазон : |
| | | |
− | Блок кода после заголовка выполняется, пока ''некая_переменная'' принадлежит ''некому_диапазону'' (причем этот диапазон может быть списком, числовой последовательностью, массивом каких-либо значений), а если нужно просто организовать цикл «от a до b», то для этого можно воспользоваться функцией ''range(a,b+1)'', которая вернет соответствующий список: | + | Блок кода после заголовка выполняется, пока ''некая_переменная'' принадлежит ''некому_диапазону'' (причем этот диапазон может быть списком, числовой последовательностью, массивом каких-либо значений), а если нужно просто организовать цикл «от a до b», то для этого можно воспользоваться функцией ''range(a, b+1)'', которая вернет соответствующий список: |
| | | |
| <code-python> | | <code-python> |
Строка 136: |
Строка 136: |
| | | |
| == Строковые литералы == | | == Строковые литералы == |
− | Очень эстетически приятной вещью в [[Python]]е является многообразие строчных литералов — т. е. строковых констант. Литералы могут быть однострочные и многострочные, использовать escape-последовательности или не использовать, | + | Очень эстетически приятной вещью в [[Python]]е является многообразие строчных литералов — то есть строковых констант. Литералы могут быть однострочные и многострочные, использовать escape-последовательности или не использовать, |
| что дает возможность замечательным образом вставлять в [[Python]]-код блоки текста на других языках (программирования или разметки), например: | | что дает возможность замечательным образом вставлять в [[Python]]-код блоки текста на других языках (программирования или разметки), например: |
| <code-python> | | <code-python> |
Строка 146: |
Строка 146: |
| </code-python> | | </code-python> |
| | | |
− | или | + | или |
| | | |
| <code-python> | | <code-python> |
Строка 157: |
Строка 157: |
| </code-python> | | </code-python> |
| | | |
− | Т.е. упрощая стандартную документацию, можно сказать что кавычки для литералов могут быть
| + | То есть упрощая стандартную документацию, можно сказать что кавычки для литералов могут быть |
| * одинарными или двойными в смысле выбора символа <tt>'</tt> или <tt>"</tt> | | * одинарными или двойными в смысле выбора символа <tt>'</tt> или <tt>"</tt> |
| * и одинарными или троекратными в смысле повторения — троекратные удобны для многострочных блоков, чтобы не мучаться, добавляя в конец каждой строки escape-символ перевода — <tt>\r</tt>. | | * и одинарными или троекратными в смысле повторения — троекратные удобны для многострочных блоков, чтобы не мучаться, добавляя в конец каждой строки escape-символ перевода — <tt>\r</tt>. |
Строка 163: |
Строка 163: |
| Также, перед первой кавычкой строкового литерала может идти префикс (один или несколько символов), поясняющих тип константы — обычная, юникод или raw-строка. Например префикс «r» (raw) избавляет (упрощенно говоря — точнее см. документацию к [[Python]]) символ «\» от его escape-функции, что дает, например возможность, без проблем включать блоки текста в [[TeX]]-разметке. | | Также, перед первой кавычкой строкового литерала может идти префикс (один или несколько символов), поясняющих тип константы — обычная, юникод или raw-строка. Например префикс «r» (raw) избавляет (упрощенно говоря — точнее см. документацию к [[Python]]) символ «\» от его escape-функции, что дает, например возможность, без проблем включать блоки текста в [[TeX]]-разметке. |
| | | |
− | <!--BEGINDSP-->
| + | == Ссылки == |
− | ==У нас== | + | * Бинарные сборки под Windows большинства пакетов (многие из которых не встанут без трудоемкой настройки компиляторов) → http://www.lfd.uci.edu/~gohlke/pythonlibs/ |
− | Рекомендован к инсталляции стандартная версия (не ActiveState), версия 2.4 (2.5 еще слишком сыровата - не все пакеты к ней существуют).
| + | |
− | x:\python.org\python-2.4.4.msi
| + | |
− | <!--ENDDSP-->
| + | |
| | | |
− | [[Category:Python]] | + | [[Категория:Python]] |
| | | |
− | {{replicate-from-custiswiki-to-all}}
| |
| {{replicate-from-custiswiki-to-lib}} | | {{replicate-from-custiswiki-to-lib}} |
Текущая версия на 15:02, 20 сентября 2013
Python современный, очень популярный, красивый, мощный и удобный интерпретируемый, расширяемый и встраиваемый, объектно-ориентированный язык (со множественным наследованием), включающий даже элементы функционального программирования. То есть это живой язык, активно использующийся для программирования как «обычных», пользовательских приложений, с переносимым оконным (см. например wxPython), или веб-приложений (см. например Zope). Растет его сфера использования в научных целях, для прототипирования и разработки новых алгоритмов, для анализа или визуализации данных (см. например Scientific Python).
Здесь, мы рассмотрим только базовые свойства синтаксиса, чтобы можно было устранить непонимание текстов, отдельных, не больше страничек, функций и процедур на Python, а за всем остальным, добро пожаловать на http://www.python.org.
Здесь мы представим краткое введение в язык Python, в первую очередь для того, чтобы обеспечить однозначное понимание представленных на языке Python алгоритмов.
Вообще, трудно найти другой язык, одновременно пригодный для обучения с одной стороны, и достаточно мощный, для реализации реальных приложений (включая научные). Дело в том, что автор Питона (Guido van Rossum) долгое время участвовал в проекте создания языка обучения программированию ABC, который должен был заменить BASIC, и вынес из проекта несколько ценных идей, как минимизировать синтаксические накладные расходы, которые необходимы в реальном языке программирования (сложные декларации, открытия/закрытия блоков), избежав при этом каббалистического минимализма (доступных только адептам пониманию взаимодействия спецсимволов типа
"<\@\%\$\^">)
в языках типа Perl.
В питоне была применена идея синтаксического выделения блоков с помощью отступов (в пределах блока отступ должен быть одинаков), кроме того операторы, начинающие вложенный блок, должны, для повышения читаемости, отделяться двоеточием:
if len(EP)>0: # ищем вершину, к которой можно добавить цикл
for i in range(0,len(EP)):
if G.degree(EP[i])>0:
v=EP[i]
break
else: # Подготавливаем пока пустой EP к присоединению цикла
v=G.nodes()[0] # выбираем первую попавшуюся вершину
EP.append(v) # и добавляем ее в EP
i=0
Далее, все переменные в питоне являются однотипными ссылками на объекты. Таким образом, устраняется необходимость декларации переменных, переменная определяется в момент первого присваивания и тип хранимого в ней объекта может быть переопределен последующими присваиваниями.
def euler_circuit(G):
EP=[] # Эйлеров цикл - массив вершин.
Кстати, можно присваивать одно и то же значение нескольким переменным одновременно:
>>> x = y = z = 0 # Присвоим нуль переменным x,y,z
>>> x
0
Также, интерпретатор берет на себя все управление памятью (резервирование, сборка мусора и т. п.).
Непосредственно в язык встроенны не только примитивные типы данных,
как числа и строки, но и более сложные структуры:
Кортежи (touples):
>>> a=(3,2,1);
>>> print a[0];
3
>>> print a[2];
1
>>>
(к сожалению, индексы в Pythonе, также как и в C, 0-based — увы).
Эффективно реализованные словари или хэши (hash):
>>> passwords={'stas': 'mysecret555', 'olga': 'mobydick'};
>>> print passwords['stas'];
mysecret555
>>> print passwords['olga'];
mobydick
>>> passwords['oleg']='hellraiser';
>>> print passwords['oleg'];
hellraiser
Списки или последовательности (list) (включая операции по slicinгу):
>>> a=[1,2,4,8,16,32];
>>> print a[3];
8
>>> print a[3:];
[8, 16, 32]
>>> print a[:3];
[1, 2, 4]
>>> print a[1:3];
[2, 4]
>>> a.append(64);
>>> print a
[1, 2, 4, 8, 16, 32, 64]
>>> a.insert(0,-22);
>>> print a
[-22, 1, 2, 4, 8, 16, 32, 64]
Теперь перечислим основные операторы.
Оператор if:
if x < 0:
x = 0
elif x == 0:
print 'Это число - нуль'
elif x == 1:
print 'Это число - 1'
else:
print `Это число больше единицы'
Оператор for имеет вид
for некая_переменная in некий_диапазон :
Блок кода после заголовка выполняется, пока некая_переменная принадлежит некому_диапазону (причем этот диапазон может быть списком, числовой последовательностью, массивом каких-либо значений), а если нужно просто организовать цикл «от a до b», то для этого можно воспользоваться функцией range(a, b+1), которая вернет соответствующий список:
for i in range(0,len(EP)):
if G.degree(EP[i])>0:
v=EP[i]
break
Да, для выхода из цикла можно использовать оператор break.
Есть и цикл while, который выполняется пока истинно указанное выражение:
while (N>0):
if ((N % 2)==0):
X=X*X % m
N=N/2
else:
y=y*X %m
N=N-1
print N,X,y
Понятна и проста декларация любой функции или процедуры (заметим, что декларации могут быть вложенными):
def gcd(a, b):
print a,b
if a == 0:
return b
return gcd(b % a, a)
Для возврата значений (тип которых, кстати, может быть тоже любым), очевидно, используется return.
А оператор print печатает содержимое переданных ему аргументов, пытаясь придать печатный вид кортежам, спискам и словарям.
Строковые литералы
Очень эстетически приятной вещью в Pythonе является многообразие строчных литералов — то есть строковых констант. Литералы могут быть однострочные и многострочные, использовать escape-последовательности или не использовать,
что дает возможность замечательным образом вставлять в Python-код блоки текста на других языках (программирования или разметки), например:
strSQL = """
SELECT a, b, c, d
FROM vtable
WHERE a=5
"""
или
strTeX = r'''
\vspace{1cm} {\Large %s}
\vspace{1cm}
\begin{center} Вариант %s
\end{center}
''' % (strTitle, intVariant)
То есть упрощая стандартную документацию, можно сказать что кавычки для литералов могут быть
- одинарными или двойными в смысле выбора символа ' или "
- и одинарными или троекратными в смысле повторения — троекратные удобны для многострочных блоков, чтобы не мучаться, добавляя в конец каждой строки escape-символ перевода — \r.
Также, перед первой кавычкой строкового литерала может идти префикс (один или несколько символов), поясняющих тип константы — обычная, юникод или raw-строка. Например префикс «r» (raw) избавляет (упрощенно говоря — точнее см. документацию к Python) символ «\» от его escape-функции, что дает, например возможность, без проблем включать блоки текста в TeX-разметке.
Ссылки