Инструменты пользователя

Инструменты сайта


python

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

python [2018/08/01 12:05]
python [2020/06/13 13:46] (текущий)
Строка 1: Строка 1:
 +====== Синтаксис Python ======
  
 +~~Title: Python ~~
 +{{htmlmetatags>
 +metatag-description=(Команды интерпретатора Python, IPython. Синтаксис Python. Использование циклов в Питоне.)
 +}}
 +
 +Homepage: [[http://www.python.org|Python]]
 +
 +**Python** ([ˈpaɪθən]; па́йсон, па́йтон, пито́н) — высокоуровневый язык программирования общего назначения с акцентом на производительность разработчика и читаемость кода. Синтаксис ядра Питона минималистичен. 
 +
 +  * [[Модули Python]]
 +  * [[Профилирование и оптимизация кода Python]] ([[Pychecker]])
 +  * Python GUI
 +      * [[wxPython]]
 +      * [[PyClutter]]. [[Clutter]] - графическая библиотека.
 +  * [[Python Работа с файлами]]
 +  * [[Простая WEB программа на Python с использованием Apache2 и mod_wsgi]]
 +  * [[Использование инструкции import в Python]]
 +  * [[Python и SQLite]]
 +  * [[Twisted]] - событийно -ориентированный сетевой фреймворк.
 +  * [[Scapy]] - одновременно интерактивная программа и библиотека манипулирования сетевыми пакетами.
 +
 +{{ ::python.jpg?nolink&600 |}}
 +====== Заметки по языку Python ======
 +  - [[Структура программы на Python. Инструкция import.]]
 +  - [[IPython]]
 +  - [[mod_python]] или [[mod_wsgi]]
 +====== Ссылки ======
 +  * [[http://www.limsi.fr/Individu/pointal/python/pqrc/|Python 2.4 Quick Reference Card]] ({{:pqrc-2.4-a4-latest.pdf|.pdf}}, {{:pqrc-2.4-a4-latest.odt| .odt}})
 +  * [[http://users.physik.fu-berlin.de/~goerz/blog/refcards/#python25|Python 2.5 Reference Card]] ({{:python_refcard.pdf|.pdf}}, {{:python_refcard.odt|.odt}})
 +  * [[http://devmobile.ru/materials/73-mobilepython/470-python-symbian-s60-|Python на Symbian S60: циклы и функции]]
 +===== Синтаксис Python =====
 +
 +==== Комментарий ====
 +**#** - символ, используется для комментирования одиночных строк.
 +
 +**(), \** - разбиение длинных логических строк на физические. Явно - с помощью обратной косой черты или неявно - внутри скобок.
 +<code>
 +'', "", ''' '''
 +</code> - задание строковых литералов, можно использовать любые перечисленные кавычки, при условии, что символы открытия и закрытия соответствуют друг другу. Если строка содержит переводы строки или вложенные кавычки - используйте тройные кавычки.
 +
 +**\** - задает управляющие последовательности внутри строковых литералов:<code>In [1]: print "stroka1\nnext stroka2"
 +------> print("stroka1\nnext stroka2")
 +stroka1
 +next stroka2</code>
 +
 +==== Кодировка файла ====
 +Правильная начало файла ниже. Не должно быть пустых строк перед coding
 +<code>#!/usr/bin/env python
 +# -*- coding: utf-8 -*-
 +#</code>
 +
 +===== Команды интерпретатора Python, IPython =====
 +
 +==== Запуск интерпретатора Python или IPython ====
 +
 +<code>
 +~$ python
 +Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41)
 +[GCC 4.3.3] on linux2
 +Type "help", "copyright", "credits" or "license" for more information.
 +>>>
 +</code>
 +Ctrl+D - выход
 +<code>
 +$ ipython
 +/var/lib/python-support/python2.6/IPython/Magic.py:38: DeprecationWarning: the sets module is deprecated
 +  from sets import Set
 +Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41)
 +Type "copyright", "credits" or "license" for more information.
 +
 +IPython 0.9.1 -- An enhanced Interactive Python.
 +?         -> Introduction and overview of IPython's features.
 +%quickref -> Quick reference.
 +help      -> Python's own help system.
 +object?   -> Details about 'object'. ?object also works, ?? prints more.
 +</code>
 +Ctrl+D - выход
 +
 +==== Команды интерпретатора ====
 +  * вывод ключевых слов Python. Их нельзя использовать в качестве имен переменных, функций или других объектов.
 +
 +<code>
 +In [1]: import keyword
 +In [2]: print keyword.kwlist
 +------> print(keyword.kwlist)
 +['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec',
 +'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print',
 +'raise', 'return', 'try', 'while', 'with', 'yield']
 +</code>
 +
 +===== Директивы =====
 +
 +Начиная с Python 2.3, для использования в тексте программы символов, не входящих в [[ASCII]], необходимо явно указывать кодировку исходного кода в начале модуля, например:
 +<code># -*- coding: utf-8 -*-
 +</code>
 +После этого можно, например, использовать кириллицу в Unicode-литералах.
 +
 +**Вывод полного перечня кодировок и их псевдонимов:**
 +<code>In [3]: import encodings
 +In [5]: print encodings.aliases.aliases
 +------> print(encodings.aliases.aliases)
 +{'iso_ir_6': 'ascii', '1140': 'cp1140', 'tis620': 'tis_620', 'iso8859': 'latin_1', 'chinese': 'gb2312',
 +...
 +'iso_ir_148': 'iso8859_9', 'utf_32be': 'utf_32_be', 'ebcdic_cp_ca': 'cp037', 'tis_620_0': 'tis_620'}
 +</code>
 +
 +===== Обработка исключений =====
 +Обработка исключений поддерживается в Python посредством операторов try, except, else, finally, raise, образующих блок обработки исключения. В общем случае блок выглядит следующим образом:
 +
 +try:
 +    #здесь код, который может вызвать исключение
 +    raise ExceptionType("message")
 +except (Тип исключения1, Тип исключения2, …), Переменная:
 +    #Код в блоке выполняется, если тип исключения совпадает с одним из типов
 +    #(Тип исключения1, Тип исключения2, …) или является наследником одного
 +    #из этих типов.
 +    #Полученное исключение доступно в необязательной Переменной.
 +except (Тип исключения3, Тип исключения4, …), Переменная:
 +    #количество блоков except не ограниченно
 +    raise #Сгенерировать исключение "поверх" полученного
 +except:
 +    #Будет выполнено при любом исключении, не обработанном типизированными блоками except
 +else:
 +    #Код блока выполняется, если не было поймано исключений.
 +finally:
 +    #будет исполненно в любом случае, возможно после соответствующего
 +    #блока except или else
 +
 +Совместное использование else, except и finally стало возможно только начиная в Python 2.5. Информация о текущем исключении всегда доступна через sys.exc_info(). Кроме значения исключения Python также сохраняет состояние стека вплоть до точки возбуждения исключения — так называемый traceback.
 +
 +В отличие от компилируемых языков программирования, в Python использование исключения не приводит к значительным накладным расходам (а зачастую даже позволяют ускорить исполнение программ) и очень широко используется. Исключения согласуются с философией Python (10-й пункт «Дзена» Python — «Ошибки никогда не должны умалчиваться») и являются одним из средств поддержки «[[http://ru.wikipedia.org/wiki/%D0%A3%D1%82%D0%B8%D0%BD%D0%B0%D1%8F_%D1%82%D0%B8%D0%BF%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F|утиной типизации]]».
 +
 +Иногда вместо явной обработки исключений удобнее использовать блок with (доступен, начиная с Python 2.5).
 +===== Цикл for =====
 +Инструкция for в языке Python немного отличается от того, что используется в таких языках, как C и Pascal. Вместо того, чтобы всегда перебирать числа арифметической прогрессии (как в Pascal) или предоставлять пользователю полную свободу выбора итератора и условий выхода из цикла (как в C), инструкция for в языке Python перебирает элементы произвольной последовательности в порядке их следования. Вот общая схема инструкции:
 +
 +for lvalue in sequence:
 +
 +suite1
 +
 +[else:
 +
 +suite2]
 +
 +Расшифруем:
 +
 +1) сначала выполняется обязательная ветвь for;
 +
 +2) sequence представляет собой последовательность элементов, будь то строка, список или кортеж, вычисляется он один раз, и изменять его не рекомендуется;
 +
 +3) in означает, что переменная lvalue перебирает все элементы последовательности sequence;
 +
 +4) после того как ветвь for выполнится (элементы в последовательности закончатся), происходит переход к необязательной ветви else (как обычно, он может отсутствовать);
 +
 +От сухих формулировок перейдем к примеру:
 +
 +>>> list = [‘I ’, ‘love ’, ‘you!’]
 +
 +>>> for text in list:
 +
 +…        print text,
 +
 +
 +
 +I love you!
 +
 +===== Цикл while =====
 +Инструкция while предназначена для создания циклов. Циклы необходимы для многократного выполнения тех или иных действий и выглядят так:
 +
 +while expr:
 +
 +suite1
 +
 +[else:
 +
 +suite2]
 +
 +Расшифруем:
 +
 +1) цикл должен состоять минимум из одной ветви while;
 +
 +2) в этой ветви проверяется истинность условия expr, и, если оно истинно, то выполняется тело ветви - suite1, по завершении которого вновь проверяется условие, и т.д., пока условие не станет ложным;
 +
 +3) если условие expr станет ложным, то осуществляется переход к ветви else с телом suite2, после выполнения которого происходит выход из цикла;
 +
 +4) ветвь else является необязательным (может отсутствовать), в этом случае, когда условие expr перестанет быть истинным, сразу происходит выход из цикла.
 +
 +Рассмотрим пример, выводящий ряд Фибоначчи:
 +
 +>>> a,b = 0,1
 +
 +>>> while b < 10:
 +
 +…        print b,
 +
 +…        a,b = b, a + b
 +
 +
 +
 +1 1 2 3 5 8
 +
 +>>>
 +Python и условные операторы
 +Цикл while
 +
 +Здесь, цикл while выполняется, пока истинно условие b<10.
 +
 +Рассмотрим пример с веткой else:
 +
 +>>> number = 1
 +
 +>>> while number != 5:
 +
 +…        print number,
 +
 +…        number += 1
 +
 +…else:
 +
 +…    print ‘number =’, number
 +
 +
 +
 +1 2 3 4 number = 5
 +
 +>>>
 +
 +На этот раз, после того как условие перестало быть истинным (number = 5), выполняется else, где и выводится последнее значение переменной number.
 +
 +Для удобной работы с циклами Python предлагает инструкции break и continue.
 +
 +break, находящийся внутри ветви while, указывает немедленно выйти из цикла. При этом пропускается  ветвь else (если она присутствует):
 +
 +>>> number = 1
 +
 +>>> while number != 5:
 +
 +…        print number,
 +
 +…        number += 1
 +
 +…        if number == 4:
 +
 +…             break
 +
 +…else:
 +
 +…    print ‘number =’, number
 +
 +
 +
 +1 2 3
 +
 +>>>
 +
 +Как видно, еще до того, как переменная number стала равной 5, удовлетворяется условие number = 4 и выполняется выход из цикла по команде break, при этом ветвь else была проигнорирована.
 +
 +continue, также находящийся внутри цикла, указывает, что надо пропустить весь нижеследующий за ним код и продолжить выполнение цикла заново:
 +
 +>>> number = 1
 +
 +>>> while number < 5:
 +
 +…        number = +1
 +
 +…        if number <= 2:
 +
 +…             continue
 +
 +…        print number,
 +
 +…else:
 +
 +…    print ‘number =’, number
 +
 +
 +
 +3 4 5 number = 5
 +
 +>>>
 +
 +На этот раз цикл каждый раз увеличивает переменную number на единицу, но не может вывести значение до цифры 3, так как в этом случае выполняется условие number<= 3 и благодаря continue пропускается нижеследующий код для вывода – инструкция print number. В случае, когда переменная number больше 3, воздействие инструкции continue не наблюдается, поэтому значение number и выводится. Также — на ветви else выполнение инструкции continue никак не влияет.
 +
 +Отмечу, цикл while 1 будет выполняться вечно (может, где и применимо), а while 0 не будет выполнен ни разу. Теперь подробно об условиях, применяющихся в if и while.