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

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


python

Различия

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

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

python [2018/08/01 05:05] (текущий)
Строка 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.
python.txt · Последние изменения: 2018/08/01 05:05 (внешнее изменение)