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

  • Глава 3. Типы данных и объектыГлава 4. Операторы и выраженияГлава 5. Структура программы и управление потоком выполненияГлава 6.

  • Глава 7. Классы и объектно-ориентированное программированиеГлава 8. Модули, пакеты и дистрибутивыГлава 9. Ввод и выводГлава 10.

  • Глава 11. Тестирование, отладка, профилирование и оптимизация Глава 1 . Вводное руководство

  • 6000 + 4523.50 + 134.12 10657.620000000001>>> _ + 8192.32

  • Операции ввода-вывода с файлами

  • справочник по Python. мм isbn 9785932861578 9 785932 861578


    Скачать 4.21 Mb.
    Названиемм isbn 9785932861578 9 785932 861578
    Анкорсправочник по Python
    Дата08.05.2022
    Размер4.21 Mb.
    Формат файлаpdf
    Имя файлаBizli_Python-Podrobnyy-spravochnik.440222.pdf
    ТипСправочник
    #518195
    страница2 из 82
    1   2   3   4   5   6   7   8   9   ...   82
    Глава 1.
    Вводное руководство
    Глава 2.
    Лексические и синтаксические соглашения
    Глава 3.
    Типы данных и объекты
    Глава 4.
    Операторы и выражения
    Глава 5.
    Структура программы и управление потоком выполнения
    Глава 6.
    Функции и функциональное программирование
    Глава 7.
    Классы и объектно-ориентированное программирование
    Глава 8.
    Модули, пакеты и дистрибутивы
    Глава 9.
    Ввод и вывод
    Глава 10.
    Среда выполнения
    Глава 11.
    Тестирование, отладка, профилирование и оптимизация

    Глава
    1
    .
    Вводное руководство
    Данная глава представляет собой краткое введение в язык программиро- вания Python. Цель ее состоит в том, чтобы продемонстрировать наиболее важные особенности языка Python, не погружаясь при этом в описание деталей. Следуя поставленной цели, эта глава кратко описывает основные понятия языка, такие как переменные, выражения, конструкции управ- ления потоком выполнения, функции, генераторы, классы, а также ввод- вывод. Эта глава не претендует на полноту охвата рассматриваемых тем.
    Однако опытные программисты без труда смогут на основе представлен- ных здесь сведений создавать достаточно сложные программы. Начинаю- щие программисты могут опробовать некоторые примеры, чтобы получить представление об особенностях языка. Если вы только начинаете изучать язык Python и используете версию Python 3, эту главу лучше будет изу-
    Python и используете версию Python 3, эту главу лучше будет изу- и используете версию Python 3, эту главу лучше будет изу-
    Python 3, эту главу лучше будет изу-
    3, эту главу лучше будет изу- чать, опираясь на версию Python 2.6. Практически все основные понятия в равной степени применимы к обеим версиям, однако в Python 3 появи- лось несколько важных изменений в синтаксисе, в основном связанных с вводом и выводом, которые могут отрицательно сказаться на работоспо- собности многих примеров в этом разделе. За дополнительной информаци- дополнительной информаци- дополнительной информаци- информаци- информаци- ей обращайтесь к приложению «Python 3».
    Вызов интерпретатора
    Программы на языке Python выполняются интерпретатором. Обычно ин-
    Python выполняются интерпретатором. Обычно ин- выполняются интерпретатором. Обычно ин- терпретатор вызывается простым вводом команды python. Однако суще- ствует множество различных реализаций интерпретатора и разнообраз- ных сред разработки (например, Jython, IronPython, IDLE, ActivePython,
    Wing IDE, pydev и так далее), поэтому за информацией о порядке вызова следует обращаться к документации. После запуска интерпретатора в ко- мандной оболочке появляется приглашение к вводу, в котором можно вво- дить программы, исполняемые в простом цикле чтение-выполнение. На- пример, ниже представлен фрагмент вывода, где интерпретатор отобража- ет сообщение с упоминанием об авторских правах и выводит приглашение к вводу >>>, где пользователь ввел знакомую команду «Привет, Мир»:

    24
    Глава 1. Вводное руководство
    Python 2.6rc2 (r26rc2:66504, Sep 19 2008, 08:50:24)
    [GCC 4.0.1 (Apple Inc. build 5465)] on darwin
    Type “help”, “copyright”, “credits” or “license” for more information.
    >>> print “Привет, Мир”
    Привет, Мир
    >>>
    Примечание
    Если при попытке опробовать предыдущий пример была получена ошибка
    SyntaxError
    , это может свидетельствовать о том, что вы пользуетесь версией Py-
    Py- thon 3. В этом случае вы по-прежнему можете следовать за примерами этой главы, но при этом должны помнить, что инструкция print в версии Python 3 была преоб-
    Python 3 была преоб-
    3 была преоб- разована в функцию. Чтобы избавиться от ошибки, просто заключите выводимые значения в круглые скобки. Например:
    >>> print(“Привет, Мир”)
    Привет, Мир
    >>>
    Добавление круглых скобок допускается и при использовании Python 2, при усло-
    Python 2, при усло-
    2, при усло- вии, что выводится единственный элемент. Однако такой синтаксис редко можно встретить в существующем программном коде на языке Python. В последующих главах этот синтаксис иногда будет использоваться в примерах, основная цель ко- торых не связана с выводом информации, но которые, как предполагается, должны одинаково работать при использовании любой из версий Python 2 или Python 3.
    Интерактивный режим работы интерпретатора Python является одной из наиболее полезных особенностей. В интерактивной оболочке можно вво- дить любые допустимые инструкции или их последовательности и тут же получать результаты. Многие, включая и автора, используют интерпрета- тор Python в интерактивном режиме в качестве настольного калькулятора.
    Например:
    >>> 6000 + 4523.50 + 134.12
    10657.620000000001
    >>> _ + 8192.32
    18849.940000000002
    >>>
    При использовании интерпретатора Python в интерактивном режиме мож-
    Python в интерактивном режиме мож- в интерактивном режиме мож- но использовать специальную переменную _, которая хранит результат по- следней операции. Ее можно использовать для хранения промежуточных результатов при выполнении последовательности инструкций. Однако важно помнить, что эта переменная определена только при работе интер- претатора в интерактивном режиме.
    Если вам необходимо написать программу, которая будет использоваться не один раз, поместите инструкции в файл, как показано ниже:
    # helloworld.py print “Привет, Мир”

    Переменные и арифметические выражения
    25
    Ф
    айлы с исходными текстами программ на языке Python являются обыч-
    Python являются обыч- являются обыч- ными текстовыми файлами и обычно имеют расширение .py. Символ # от- мечает начало комментария, простирающегося до конца строки.
    Чтобы выполнить программу в файле helloworld.py, необходимо передать имя файла интерпретатору, как показано ниже:
    % python helloworld.py
    Привет, Мир
    %
    Чтобы запустить программу на языке Python в Windows, можно дважды щелкнуть мышью на файле с расширением .py или ввести имя программы в окне
    Запустить…
    (
    Run command
    ), которое вызывается одноименным пунктом в меню
    Пуск
    (
    Start
    ). В результате в окне консоли будет запущен интерпрета- тор, который выполнит указанную программу. Однако следует помнить, что окно консоли будет закрыто сразу же после окончания работы про- граммы (зачастую еще до того, как вы успеете прочитать результаты). При отладке лучше всего запускать программы с помощью инструментов раз- работчика на языке Python, таких как IDLE.
    В UNIX можно добавить в первую строку программы последовательность
    #!
    , как показано ниже:
    #!/usr/bin/env python print “Привет, Мир”
    Интерпретатор последовательно выполняет инструкции, пока не достигнет конца файла. При работе в интерактивном режиме завершить сеанс рабо- ты с интерпретатором можно вводом символа EOF (end of file – конец файла) или выбором пункта меню
    Exit
    (Выйти) в среде разработки Python. В UNIX символ EOF вводится комбинацией клавиш
    Ctrl+D
    ; в Windows –
    Ctrl+Z
    . Про- грамма может совершить выход, возбудив исключение SystemExit.
    >>> raise SystemExit
    Переменные и арифметические выражения
    В листинге 1.1 приводится программа, которая использует переменные и выражения для вычисления сложных процентов.
    Листинг 1.1. Простое вычисление сложных процентов
    principal = 1000 # Начальная сумма вклада rate = 0.05 # Процент numyears = 5 # Количество лет year = 1
    while year <= numyears:
    principal = principal * (1 + rate)
    print year, principal # В Python 3: print(year, principal)
    year += 1
    В результате работы программы будет получена следующая таблица:

    26
    Глава 1. Вводное руководство
    1 1050.0 2 1102.5 3 1157.625 4 1215.50625 5 1276.2815625
    Python – это язык с динамической типизацией, то есть в ходе выполнения программы одна и та же переменная может хранить значения различных типов. Оператор присваивания просто создает связь между именем пере- менной и значением. Хотя каждое значение имеет собственный тип дан- ных, например целое число или строка, сами переменные не имеют типа и в процессе выполнения программы могут ссылаться на значения любых типов. Этим Python отличается от языка C, например, в котором каждая переменная имеет определенный тип, размер и местоположение в памяти, где сохраняется ее значение. Динамическую природу языка Python можно наблюдать в листинге 1.1 на примере переменной principal. Изначально ей присваивается целочисленное значение. Однако позднее в программе вы- полняется следующее присваивание:
    principal = principal * (1 + rate)
    Эта инструкция вычисляет выражение и присваивает результат перемен- ной с именем principal. Несмотря на то что первоначальное значение пере- менной principal было целым числом 1000, новое значение является числом с плавающей точкой (значение переменной rate является числом с плаваю- щей точкой, поэтому результатом приведенного выше выражения также будет число с плавающей точкой). То есть в середине программы «тип» переменной principal динамически изменяется с целочисленного на число с плавающей точкой. Однако, если быть более точными, следует заметить, что изменяется не тип переменной principal, а тип значения, на которое ссылается эта переменная.
    Конец строки завершает инструкцию. Однако имеется возможность разме- стить несколько инструкций в одной строке, отделив их точкой с запятой, как показано ниже:
    principal = 1000; rate = 0.05; numyears = 5;
    Инструкция while вычисляет условное выражение, следующее прямо за ней. Если результат выражения оценивается как истина, выполняется тело инструкции while. Условное выражение, а вместе с ним и тело цик- ла, вычисляется снова и снова, пока не будет получено ложное значение.
    Тело цикла выделено отступами, то есть в листинге 1.1 на каждой ите- рации выполняются три инструкции, следующие за инструкцией while.
    Язык Python не предъявляет жестких требований к величине отступов, важно лишь, чтобы в пределах одного блока использовались отступы одно- го и того же размера. Однако чаще всего отступы оформляются четырьмя пробелами (и так и рекомендуется).
    Один из недостатков программы, представленной в листинге 1.1, заключа- ется в отсутствии форматирования при выводе данных. Чтобы исправить

    Переменные и арифметические выражения
    27
    е го, можно было бы использовать выравнивание значений переменной principal по правому краю и ограничить точность их представления двумя знаками после запятой. Добиться такого форматирования можно несколь- кими способами. Наиболее часто для подобных целей используется опера- тор форматирования строк (%), как показано ниже:
    print “%3d %0.2f” % (year, principal)
    print(“%3d %0.2f” % (year, principal)) # Python 3
    Теперь вывод программы будет выглядеть, как показано ниже:
    1 1050.00 2 1102.50 3 1157.63 4 1215.51 5 1276.28
    Строки формата содержат обычный текст и специальные спецификаторы формата, такие как “%d”, “%s” и “%f”. Приведенные спецификаторы опреде- ляют формат представления данных определенных типов – целых чисел, строк и чисел с плавающей точкой соответственно. Спецификаторы форма- та могут также содержать модификаторы, определяющие ширину поля вы- вода и точность представления значений. Например, спецификатор “%3d” форматирует целое число, с выравниванием по правому краю в поле ши- риной 3 символа, а спецификатор “%0.2f” форматирует число с плавающей точкой так, чтобы выводились только два знака после запятой. Поведение спецификаторов формата для строк во многом идентично поведению спец- ификаторов формата для функции printf() в языке C и подробно описыва- ется в главе 4 «Операторы и выражения».
    Более современный подход к форматированию строк заключается в фор- матировании каждой части строки по отдельности, с помощью функции format()
    . Например:
    print format(year,”3d”),format(principal,”0.2f”)
    print(format(year,”3d”),format(principal,”0.2f”)) # Python 3
    Спецификаторы формата для функции format() похожи на спецификаторы, традиционно используемые в операторе форматирования строк (%). Напри- мер, спецификатор “3d” форматирует целое число, выравнивая его по пра- вому краю в поле шириной 3 символа, а спецификатор “0.2f” форматирует число с плавающей точкой, ограничивая точность представления двумя знаками после запятой. Кроме того, строки имеют собственный метод for- mat()
    , который может использоваться для форматирования сразу несколь- ких значений. Например:
    print “{0:3d} {1:0.2f}”.format(year,principal)
    print(“{0:3d} {1:0.2f}”.format(year,principal)) # Python 3
    В данном примере число перед двоеточием в строках “{0:3d}” и “{1:0.2f}” определяет порядковый номер аргумента метода format(), а часть после двое точия – спецификатор формата.

    28
    Глава 1. Вводное руководство
    Условные операторы
    Для простых проверок можно использовать инструкции if и else. Напри- мер:
    if a < b:
    print “Компьютер говорит Да”
    else:
    print “Компьютер говорит Нет”
    Тела инструкций if и else отделяются отступами. Инструкция else явля- ется необязательной.
    Чтобы создать пустое тело, не выполняющее никаких действий, можно ис- пользовать инструкцию pass, как показано ниже:
    if a < b:
    pass # Не выполняет никаких действий else:
    print “Компьютер говорит Нет”
    Имеется возможность формировать булевы выражения с использованием ключевых слов or, and и not:
    if product == “игра” and type == “про пиратов” \
    and not (age < 4 or age > 8):
    print “Я беру это!”
    Примечание
    При выполнении сложных проверок строка программного кода может оказаться достаточно длинной. Чтобы повысить удобочитаемость, инструкцию можно пере- нести на следующую строку, добавив символ обратного слэша (\) в конце строки, как показано выше. В этом случае обычные правила оформления отступов к сле- дующей строке не применяются, поэтому вы можете форматировать строки, про- должающие инструкцию, как угодно.
    В языке Python отсутствует специальная инструкция проверки значений, такая как switch или case. Чтобы выполнить проверку на соответствие не- скольким значениям, можно использовать инструкцию elif, например:
    if suffix == “.htm”:
    content = “text/html”
    elif suffix == “.jpg”:
    content = “image/jpeg”
    elif suffix == “.png”:
    content = “image/png”
    else:
    raise RuntimeError(“Содержимое неизвестного типа”)
    Для определения истинности используются значения True и False типа
    Boolean. Например:
    if ‘spam’ in s:
    has_spam = True

    Операции ввода-вывода с файлами
    29
    else:
    has_spam = False
    Все операторы отношений, такие как < и >, возвращают True или False. Опе- ратор in, задействованный в предыдущем примере, часто используется для проверки вхождения некоторого значения в другой объект, такой как стро- ка, список или словарь. Он также возвращает значение True или False, бла- годаря чему предыдущий пример можно упростить, как показано ниже:
    has_spam = ‘spam’ in s
    Операции ввода-вывода с файлами
    Следующая программа открывает файл и читает его содержимое построчно:
    f = open(“foo.txt”) # Возвращает файловый объект line = f.readline() # Вызывается метод readline() файла while line:
    print line, # Завершающий символ ‘,’ предотвращает перевод строки
    # print(line,end=’’) # Для Python 3
    line = f.readline()
    f.close()
    Функция open() возвращает новый файловый объект. Вызывая методы этого объекта, можно выполнять различные операции над файлом. Метод read- line()
    читает одну строку из файла, включая завершающий символ перевода строки. По достижении конца файла возвращается пустая строка.
    В данном примере программа просто выполняет обход всех строк в файле foo.txt
    . Такой прием, когда программа в цикле выполняет обход некото- рой коллекции данных (например, строк в файле, чисел, строковых зна- чений и так далее), часто называют итерациями. Поскольку потребность в итерациях возникает достаточно часто, для этих целей в языке Python предусмотрена специальная инструкция for, которая выполняет обход эле- ментов коллекции. Например, та же программа может быть записана бо- лее кратко:
    for line in open(“foo.txt”):
    print line,
    Чтобы записать вывод программы в файл, в инструкцию print можно до- бавить оператор >> перенаправления в файл, как показано в следующем примере:
    f = open(“out”,”w”) # Открывает файл для записи while year <= numyears:
    principal = principal * (1 + rate)
    print >>f,”%3d %0.2f” % (year,principal)
    year += 1
    f.close()
    Оператор >> можно использовать только в Python 2. При работе с версией
    Python 3 инструкцию print следует изменить, как показано ниже:
    print(“%3d %0.2f” % (year,principal),file=f)

    30
    Глава 1. Вводное руководство
    Кроме того, файловые объекты обладают методом write(), который мож- но использовать для записи неформатированных данных. Например, ин- струкцию print в предыдущем примере можно было бы заменить следую- щей инструкцией:
    f.write(“%3d %0.2f\n” % (year,principal))
    Хотя в этих примерах выполняются операции над файлами, те же приемы можно использовать при работе со стандартными потоками ввода и выво- да. Например, когда требуется прочитать ввод пользователя в интерактив- ном режиме, его можно получить из файла sys.stdin. Когда необходимо вывести данные на экран, можно записать их в файл sys.stdout, который используется инструкцией print. Например:
    import sys sys.stdout.write(“Введите свое имя :”)
    name = sys.stdin.readline()
    При использовании Python 2 этот пример можно сократить еще больше, как показано ниже:
    name = raw_input(“Введите свое имя :”)
    В Python 3 функция raw_input() стала называться input(), но она действует точно так же.
    Строки
    Чтобы создать литерал строки, ее необходимо заключить в апострофы, в кавычки или в тройные кавычки, как показано ниже:
    a = “Привет, Мир!”
    b = ‘Python – прелесть’
    c = “””Компьютер говорит ‘Нет’”””
    Строковый литерал должен завершаться кавычками того же типа, как ис- пользовались в начале. В противоположность литералам в апострофах и в кавычках, которые должны располагаться в одной логической строке, ли- тералы в тройных кавычках могут включать текст произвольной длины – до завершающих тройных кавычек. Литералы в тройных кавычках удоб- но использовать, когда содержимое литерала располагается в нескольких строках, как показано ниже:
    print ‘’’Content-type: text/html
    ёё
    1   2   3   4   5   6   7   8   9   ...   82


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