Главная страница
Навигация по странице:

  • УДК 004.432Python(075.8) ББК 32.973–018.1я73-1 ISBN 978-985-566-746-0

  • Fraction

  • Важно!

  • С. В. Вабищевич инженерпрограммист компании ооо ск хайникс мемори солюшнс Восточная Европа


    Скачать 1.28 Mb.
    НазваниеС. В. Вабищевич инженерпрограммист компании ооо ск хайникс мемори солюшнс Восточная Европа
    Дата22.11.2021
    Размер1.28 Mb.
    Формат файлаpdf
    Имя файлаKositsin.pdf
    ТипУчебно-методическое пособие
    #278468
    страница1 из 9
      1   2   3   4   5   6   7   8   9

    УДК 004.432Python(075.8)
    ББК 32.973–018.1я73-1
    К71
    Р е ц е н з е н т ы :
    кафедра информатики и методики преподавания информатики физико-математического факультета
    Белорусского государственного педагогического университета имени Максима Танка (заведующий кафедрой кандидат педагогических наук С. В. Вабищевич); инженер-программист компании
    ООО «СК хайникс мемори солюшнс Восточная Европа»
    С. В. Боярович
    К71
    Косицин, Д. Ю.
    Язык программирования Python : учеб.-метод. пособие /
    Д. Ю. Косицин. – Минск : БГУ, 2019. – 136 с.
    ISBN 978-985-566-746-0.
    Учебно- методическое пособие содержит теоретический материал по основным синтаксическим конструкциям языка программирования
    Python, а также примеры, объясняющие особенности их использова- ния. Оно поможет студентам освоить язык программирования Python, обратив при этом внимание на многие детали реализации языка и раз- личие между его версиями.
    Предназначено для магистрантов учреждений высшего образова- ния, обучающихся по специальности 1–31 81 09 «Прикладная матема- тика и информатика».
    УДК 004.432Python(075.8)
    ББК 32.973–018.1я73-1
    ISBN 978-985-566-746-0
    © Косицин Д. Ю., 2019
    © БГУ, 2019

    ПРЕДИСЛОВИЕ
    Скриптовый язык Python – интерпретируемый высокоуров- невый язык программирования общего назначения. Появив- шись в 1991 г., этот язык продолжает активно развиваться и со- вершенствоваться. Акцент философии Python на читаемости кода, наличие обширной стандартной библиотеки сделали его популярным средством для решения множества задач. На теку- щий момент благодаря богатейшему разнообразию сторонних библиотек и фреймворков Python широко используется, в част- ности, в сфере web- разработки, научных расчетов и исследова- ний искусственного интеллекта, а также всякого рода прототи- пирования и скриптования.
    Данное учебно-методическое пособие является дополне- нием к дисциплине «Скриптовые языки программирования
    (Python)» и содержит лекции с примерами и пояснениями. Ма- териал разбит на главы, после которых помещены задачи для отработки изложенного материала. В издании рассматривает- ся Python 3.x как основная версия языка, но приводится срав- нение с Python 2.x и отличия между последними версиями язы- ка Python.
    Предназначено для изучающих язык программирования
    Python, желающих повторить и закрепить новый материал или получить углубленные знания по интересующим темам, а также для опытных разработчиков в качестве справочника.

    4
    Глава
    1
    БЫСТРЫЙ СТАРТ
    1.1. О ЯЗЫКЕ
    ИСТОРИЯ ЯЗЫКА
    Основной автор языка программирования Python – Гви- до ван Россум. Первые версии языка появились в 1991 г. Основных версий на данный момент три:
    – Python 1.0 – появился в 1994 г.;
    – Python 2.0 – 2000 г.;
    – Python 3.0 – 2008 г.
    ОСОБЕННОСТИ ЯЗЫКА
    Особенности языка программирования Python следующие:
    свободно распространяемый;
    с открытым исходным кодом – можно разрабатывать свои мо- дули, а также вносить предложения по улучшению;
    переносимый (кроссплатформенный) – есть возможность ин- терпретировать Python на многих платформах и архитектурах, в том числе использовать его для написания программ управления устрой- ствами (прошивок);
    – обладает неплохой стандартной библиотекой.
    С точки зрения классификации язык относится к следующим ка- тегориям:
    высокоуровневый;
    интерпретируемый – скрипты на Python компилируются в не- которые высокоуровневые инструкции (байт- код), которые после- довательно выполняются интерпретатором;
    мультипарадигменный – построен на принципах объектно ори- ентированного программирования и реализует его основные меха- низмы в виде наследования, инкапсуляции и полиморфизма;
    жесткая (сильная, strong) динамическая типизация – с одной стороны, переменная связывается с типом во время присваивания

    5
    значения, а не в момент объявления переменной, с другой – ошиб- ки, связанные с неверным использованием типов, предотвращают- ся во время выполнения программы (в run- time бросается исключе- ние), а также допускается некоторое неявное преобразование типов
    (например, приведение чисел или преобразование к булеву типу).
    ЭФФЕКТИВНОСТЬ
    С точки зрения скорости разработки Python характеризу- ется понятностью кода:
    – код легко писать – синтаксис максимально упрощен;
    – код легко читать – идеология кода, написанного на языке
    Python, такова, что есть возможность читать его как текст на есте- ственном языке;
    – код легко отлаживать – есть возможность посмотреть значе- ние практически любой переменной, а также состояние стека вызо- вов и присутствуют встроенные средства отладки в виде дебаггера;
    – для разработки есть официальное руководство по стилю кода
    (style guide; PEP-8 1
    , PEP-257 2
    ).
    С точки зрения производительности он медленнее многих язы- ков. Например, программа, выполняющая простые операции с ба- зовыми типами (числами, строками), интерпретируемая «чистым»
    Python без дополнительных оптимизаций, медленнее аналогичной программы, написанной на языке C++, в 5–100 раз.
    ОСНОВНЫЕ НАПРАВЛЕНИЯ РАЗРАБОТКИ НА PYTHON
    Используется Python в основном для следующих целей:
    прототипирование – если есть необходимость сравнить неко- торое число подходов к разработке или некоторые архитектуры, до- вольно просто написать прототип на Python;
    интеграция, реализация вспомогательных программ – простые программы для обработки текстов, преобразования форматов, дей- ствий с большим количеством файлов легко реализовать на Python ввиду большой стандартной библиотеки и наличия большого коли- чества сторонних библиотек;
    1
    https://www.python.org/dev/peps/pep-0008 2
    https
    ://www.python.org/dev/peps/pep‑0257

    6
    исследования – на Python можно относительно быстро кодиро- вать сложные математические вычисления, одновременно сохраняя и интерпретируя промежуточные результаты, работать с разными форматами данных;
    – web- сервисы и приложения – синтаксис языка Python позволя- ет максимально упростить и ускорить разработку web- приложений, поскольку написание всего приложения сводится к четкой и диффе- ренцированной реализации отдельных его компонентов, причем код остается легко читаемым.
    Язык программирования Python является удобной оберткой над многими низкоуровневыми примитивами: позволяет их едино- образно использовать и не думать о работе с памятью.
    ИДЕОЛОГИЯ PYTHON
    В Python есть свод правил и идей, которыми рекоменду- ется руководствоваться, так называемый Python Zen. Если вы на- берете в интерпретаторе следующую строку, вам откроется пол- ный список.
    >>> import this
    Ниже приведены некоторые из них, пожалуй, одни из основных:
    – красивое лучше неприятного (beautiful is better than ugly) – ста- райтесь код писать выразительно, соблюдая чистоту, отступы, кор- ректно называя переменные;
    – простое лучше сложного (simple is better than complex) – старай- тесь писать максимально простой код без длинных функций и без высокой вложенности;
    – сложное лучше мудреного (complex is better than complicated) – если не удается написать простой код, напишите качественный сложный, но так, чтобы в нем можно было разобраться;
    – читаемость очень важна (readability counts) – согласуется с пра- вилом о красивом и неприятном; важно, чтобы код можно было до- вольно быстро и легко воспринимать;
    – исключительные случаи не настолько исключительны, чтобы нарушать правила (special cases aren’t special enough to break the rules) – поскольку язык Python динамически типизированный, есть возмож- ность писать довольно общие функции и условные конструкции, что может значительно упростить код;
    – если реализацию сложно объяснить, то это плохая идея (if the
    implementation is hard to explain, it’s a bad idea);

    7
    если реализацию легко объяснить, это может быть хорошая идея (if the implementation is easy to explain, it may be a good idea).
    Также следует упомянуть «Правило Человека- Паука»: с больши- ми возможностями приходит и большая ответственность! (Spider-
    Man rule: With Great Power Comes Great Responsibility!)
    1.2. ВЕРСИИ И ИНТЕРПРЕТАТОРЫ
    ВЕРСИИ PYTHON
    Существуют две официальные и несовместимые вер- сии Python: Python 2.x и Python 3.x. Версия 3.x активно развивается
    (на август 2019 г. это версии 3.7.4 и 3.8.0b3). Версия 2.x по- прежнему поддерживается (последняя на сентябрь 2018 г. – версия 2.7.16), но окончание ее поддержки планируется в начале 2020 г.
    В версию Python 2.x были перенесены некоторые улучшения, из- начально реализованные для Python 3.x, однако эти улучшения ка- саются скорее библиотек.
    Стоит отметить, что некоторые основные версии Python, напри- мер Python 3.6 и Python 3.7, несовместимы между собой.
    ИНТЕРПРЕТАТОРЫ
    Поскольку язык программирования Python скриптовый, для его выполнения написаны разные интерпретаторы. Они ин- терпретируют скрипты, написанные на Python, в виде конструкций на других высокоуровневых языках (например, на C).
    Ниже представлены самые распространенные интерпретаторы
    Python:
    – CPython – официальный интерпретатор Python, написанный на языке программирования C;
    – Jython, IronPython – интерпретаторы на Java и.Net; особен- ность их в том, что они позволяют расширить стандартную библи- отеку Python библиотекой языка Java (Jython) или библиотекой.Net
    (IronPython);
    – PyPy, Numba – интерпретаторы, которые позволяют пред- компилировать некоторые конструкции или функци (Just- in- Time compilers);

    8
    – Cython, Nuitka – интерпретаторы на базе CPython, но они до- пускают указание типов, а также производят некоторые другие оп- тимизации для ускорения выполнения программ;
    – Stackless Python – реализация интерпретатора, отличающаяся специфической реализацией многопоточности;
    – Julia – другой язык, в некотором роде надстройка над Python.
    СРЕДЫ РАЗРАБОТКИ
    Обычно для разработки предлагается использовать один из следующих инструментов:
    – некоторый текстовый редактор с подсветкой синтаксиса и ав- тодополнением: SublimeText, Notepad++, Visual Studio Code;
    – блокнот Jupyter [Notebook] / IPython [Notebook] – специфиче- ский редактор текста, содержащий набор ячеек, каждая из которых может содержать либо код, а также результат его выполнения (на- пример, график или результат вычисления формулы), а также текст, описывающий и поясняющий код или процесс эксперимента;
    – PyCharm (Community Edition) – одна из самых популярных и удобных сред разработки в 2018 г.;
    – Visual Studio with plugin (native in VS 2017) – классическая сре- да разработки от компании Microsoft.
    УСТАНОВКА БИБЛИОТЕК
    В индексе пакетов PyPI (Python Package Index) есть все популярные библиотеки. Установить некоторую библиотеку можно с помощью утилиты
    pip, которая поставляется с последними версия- ми интерпретатора. Установить библиотеку, например с именем
    six, можно следующим образом:
    $ python -m pip install six
    Специфические инструкции по установке, а также документа- цию по библиотекам можно найти на их официальных сайтах или на сайте PyPI
    1
    При установке библиотек довольно часто возникает проблема с компиляцией библиотек.
    Ответ, почему не компилируется неко- торая библиотека, часто легко найти в сети Интернет. Следует отме-
    1
    https
    ://pypi.python.org/pypi
    тить, что лучше устанавливать уже скомпилированную версию ма- тематической библиотеки
    numpy под Windows с поддержкой mkl.
    При установке нескольких версий Python следите за тем, чтобы в системные переменные пути
    PATH и/или PYTHONPATH не попа- ли пути ни одного из интерпретаторов, иначе одна из версий интер- претатора в некоторый момент может попытаться загрузить библио- теки другой версии.
    Для массовой установки библиотек в системе Windows разрабо- таны специальные дистрибутивы, которые позволяют избежать ука- занных выше проблем: Python(x, y), Anaconda, Canopy.
    Для поддержки различных версий пакетов, например в случае отладки программ на новой версии библиотеки или необходимости работы на разных проектах с разными версиями библиотек, исполь- зуйте
    virtualenv. Она позволяет создавать так называемые «вирту- альные окружения», в которые можно независимо от других окруже- ний и интерпретаторов ставить необходимые библиотеки.

    10
    Глава
    2
    ОСНОВЫ ЯЗЫКА
    2.1. ИНТЕРПРЕТАТОР
    Интерпретатор можно запустить в обычном режиме, т. е. выполнить с его помощью исходный код (запустить новый процесс с программой):
    $ python main.py
    Интерпретатор можно запустить в интерактивном режиме – ин- терпретатор без кода:
    $ python
    Следует отметить, что в интерпретаторе доступны следующие глобальные функции:

    help(…) – справка по указанному объекту (выход: q)

    exit() или quit() – выход
    2.2. РАБОТА С ЧИСЛАМИ В PYTHON
    В Python доступны следующие типы для работы с числами:

    int – тип, представляющий целое число произвольной длины;

    float – тип, представляющий число с плавающей точкой;

    complex – тип, представляющий комплексное число.
    В стандартной библиотеке также есть возможность восполь- зоваться типами
    Fraction (рациональная дробь) и Decimal (число с плавающей точкой произвольной точности).
    Замечание. В Python 2.x для работы с целыми числами использу- ются два типа –
    int (число от –2**31 до 2**31–1) и long (целое число произвольной длины), а в Python 3 – только один (
    int). Эту особен- ность следует учитывать при использовании функции
    xrange (она принимает только значения типа
    int), а также при проверке значе- ния на целочисленность (нужно проверять сразу на принадлежность двум типам).

    11
    Над типами доступны обычные арифметические операции: сло- жение (+), вычитание (–), умножение (*), возведение в степень (**), деление (обычное «/» и целочисленное «//»), взятие остатка от де- ления (%) и функция, производящая деление с остатком (divmod).
    Рассмотрим особенности деления на следующем примере:
    >>> –2 * 7 // 3 + 4 ** (4 % 2)
    –4
    Здесь при целочисленном делении частное является ближайшим снизу к результату деления целым числом.
    В следующем примере показана особенность оператора возве- дения в степень – он правоассоциативный:
    >>> 3 ** 2 ** 3 == 3 ** (2 ** 3) == 6561
    True
    Оператор целочисленного деления работает следующим обра- зом:
    >>> print(7 / 3, 7 / 3.0, 7 // 3.0)
    2.33333333333 2.33333333333 2.0
    Замечание. В Python 2.x деление целых чисел является целочис- ленным. Для получения ожидаемого результата следует либо явно преобразовать делимое или делитель к типу
    float, либо подключить особенности деления из Python 3.x. Также в Python 2.x функция
    print является инструкцией (англ. statement).
    Также в Python доступны следующие битовые операторы:
    – операторы битового сдвига влево и вправо (<< и >>);
    – оператор побитового «и» (&);
    – оператор побитового «или» (|);
    – оператор исключающего «или» (^).
    Есть возможность задания чисел в других системах счисления.
    Для этого используются префиксы: 0b для бинарной, 0o – восьми- ричной, 0x – шестнадцатиричной системы счисления.
    >>> 0b1001 == (1 << 3) + 1
    True
    Приоритет операторов не отличается от других языков
    (Py thon 2.x)
    1
    , (Python 3.x)
    2 1
    https
    ://docs.python.org/2/reference/expressions.html
    2
    https
    ://docs.python.org/3/reference/expressions.html

    12
    Важно! Тип bool наследуется от int и допускает только два зна- чения:
    True (1) и False (0).
    В Python 3.5 появился оператор матричного умножения
    @
    (PEP465)
    1
    >>> x = numpy.array([1., 1., 1.])
    >>> m = numpy.array([[1., 0., 0.],
    [0., 1., 0.],
    [0., 0., 1.]])
    >>> x @ m numpy.array([1., 1., 1.])
    2.3. ОСНОВНЫЕ КОНСТРУКЦИИ ЯЗЫКА
    ЛОГИЧЕСКИЕ ВЫРАЖЕНИЯ
    В Python доступны сравнения объектов на равенство и нера- венство (== и!=), определение предшествования объектов (<, >, <=, >=), оператор логического «и» (
    and), логического «или» (or) и отрица- ния (
    not).
    >>> 0!= 0
    False
    >>> 2 * 2 == 4
    True
    >>> False or 0 > –1 and True
    True
    >>> not 0 < 1 <= 5
    False
    Обратите внимание на то, что допустимо множественное срав- нение, как в последнем примере.
    ПЕРЕМЕННЫЕ
    Поскольку язык Python динамически типизирован, объяв- ление переменной совмещено с ее определением, а указание типа переменной не требуется. Как и принято в других языках, к ариф-
    1
    https
    ://www.python.org/dev/peps/pep‑0465

    13
    метическим типам применимо неявное преобразование: в примере ниже целое число при сложении с числом с плавающей точкой при- ведено к типу последнего.
    >>> x = 1
    >>> y = 2.5
    >>> x + y
    3.5
    >>> True and y
    2.5
    Обратите внимание, что результатом последнего выражения яв- ляется число, а не переменная типа
    bool. На самом деле значение выражения определяется значением последнего вычисленного под- выражения, на основании которого можно однозначно определить результат всей конструкции.
    Вычисление сложных логических выражений происходит лени- во: ветки вычисляются согласно приоритетам, и как только можно определить, что все выражение будет истинным либо ложным, вы- числение прекращается.
    В Python также допустимы сокращенные операторы, которые мо- дифицируют результат переменной:
    >>> y /= 2 * x # y = 1.25
    1.25
    Комментарием в Python является код, написанный после сим- вола «#».
    Замечание. В интерпретаторе Python переменная «_» зарезерви- рована, и в ней хранится значение последнего вычисленного выра- жения. В коде такую переменную обычно используют для того, что- бы опустить присваивание некоторого элемента.
    УСЛОВНЫЙ ОПЕРАТОР IF
    Рассмотрим оператор условного ветвления на примере реа- лизации функции, которая вычисляет абсолютное значение величины.
    >>>
      1   2   3   4   5   6   7   8   9


    написать администратору сайта