Слайд 1Web-программирование
Лекция 4. python 3 (часть 1)
асист. каф. 308 Трутнева Надежда
Владимировна
тел: 8-926-880-12-76
почта: ntrutn@gmail.com
Слайд 2python 3
Python — высокоуровневый язык программирования общего назначения, ориентированный на
повышение производительности разработчика и читаемости кода.
Python – интерпретируемый язык программирования.
Слайд 3Программа
Программа на языке Python может состоять из одного или нескольких
модулей. Каждый модуль представляет собой текстовый файл в кодировке, совместимой
с 7-битной кодировкой ASCII. Для кодировок, использующих старший бит, необходимо явно указывать название кодировки. Например, модуль, комментарии или строковые литералы которого записаны в кодировке KOI8-R, должен иметь в первой или второй строке следующую спецификацию:
# -*- coding: utf8 -*-
Программа на Python, с точки зрения интерпретатора, состоит из логических строк. Одна логическая строка, как правило, располагается в одной физической, но длинные логические строки можно явно (с помощью обратной косой черты) или неявно (внутри скобок) разбить на несколько физических:
(синтаксис python 2.7)
print a, " - очень длинная строка, которая не помещается в", \
80, "знакоместах"
Слайд 4имена
Имя может начинаться с латинской буквы (любого регистра) или подчеркивания,
а дальше допустимо использование цифр. В качестве идентификаторов нельзя применять
ключевые слова языка и нежелательно переопределять встроенные имена.
>>> import keyword
>>> keyword.kwlist
['and', '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', 'yield']
Имена, начинающиеся с подчеркивания или двух подчеркиваний, имеют особый смысл. Одиночное подчеркивание говорит программисту о том, что имя имеет местное применение, и не должно использоваться за пределами модуля. Двойным подчеркиванием в начале и в конце обычно наделяются специальные имена.
Слайд 5имена
В каждой точке программы интерпретатор "видит" три пространства имен:
локальное,
глобальное
встроенное
Пространство имен - отображение из имен в объекты.
Локальные имена -
имена, которым присвоено значение в данном блоке кода. Глобальные имена - имена, определяемые на уровне блока кода определения модуля или те, которые явно заданы в операторе global. Встроенные имена - имена из специального словаря __ builtins __.
Области видимости имен могут быть вложенными друг в друга, например, внутри вызванной функции видны имена, определенные в вызывающем коде. Переменные, которые используются в блоке кода, но связаны со значением вне кода, называются свободными переменными.
Так как переменную можно связать с объектом в любом месте блока, важно, чтобы это произошло до ее использования, иначе будет возбуждено исключение NameError. Связывание имен со значениями происходит в операторах присваивания, from, import, в формальных аргументах функций, при определении функции или класса, во втором параметре части except оператора try-except.
Слайд 6целые числа
обычное целое int
целое произвольной точности long
логический bool
Слайд 8системы счисления
• int([object], [основание системы счисления]) - преобразование к целому
числу в деся-
тичной системе счисления. По умолчанию система счисления десятичная,
но можно
задать любое основание от 2 до 36 включительно.
• bin(x) - преобразование целого числа в двоичную строку.
• hex(х) - преобразование целого числа в шестнадцатеричную строку.
• oct(х) - преобразование целого числа в восьмеричную строку
Слайд 10Вещественные и комплексные числа
Тип complex
Литерал мнимой части задается добавлением j
в качестве суффикса (перемножаются мнимые единицы):
>>> -1j * -1j
(-1-0j)
Тип реализован
на базе вещественного. Кроме арифметических операций, можно использовать операции из модуля cmath.
Тип float
>>> pi = 3.1415926535897931
>>> pi ** 40
7.6912142205156999e+19
Кроме арифметических операций, можно использовать операции из модуля math.
Слайд 11последовательности
Последовательности бывают изменчивыми и неизменчивыми.
Слайд 12последовательности (срезы)
последовательность[нач:кон:шаг]
где нач - промежуток начала среза, кон - конца
среза, шаг - шаг. По умолчанию нач=0, кон=len(последовательность), шаг=1, если
шаг не указан, второе двоеточие можно опустить.
Слайд 15список (list)
Создание списка с помощью генератора списков:
Слайд 17кортеж (tuple)
Для представления константной последовательности (разнородных) объектов используется тип кортеж.
Литерал кортежа обычно записывается в круглых скобках, но можно, если
не возникают неоднозначности, писать и без них.
p = (1.2, 3.4, 0.9) # точка в трехмерном пространстве
for s in "one", "two", "three": # цикл по значениям кортежа
print s
one_item = (1,)
empty = ()
p1 = 1, 3, 9 # без скобок
p2 = 3, 8, 5, # запятая в конце игнорируется
Использовать синтаксис кортежей можно и в левой части оператора присваивания. В этом случае на основе вычисленных справа значений формируется кортеж и связывается один в один с именами в левой части.
a, b = b, a
Слайд 18словарь (dict)
Словарь (хэш, ассоциативный массив) - это изменчивая структура данных
для хранения пар ключ-значение, где значение однозначно определяется ключом. В
качестве ключа может выступать неизменчивый тип данных (число, строка, кортеж и т.п.). Порядок пар ключ-значение произволен.
d = {1: 'one', 2: 'two', 3: 'three', 4: 'four'}
d0 = {0: 'zero'}
print d[1] # берется значение по ключу
d0[0] = 0 # присваивается значение по ключу
del d0[0] # удаляется пара ключ-значение с данным ключом
print d
for key, val in d.items(): # цикл по всему словарю
print key, val
for key in d.keys(): # цикл по ключам словаря
print key, d[key]
for val in d.values(): # цикл по значениям словаря
print val
d.update(d0) # пополняется словарь из другого
print len(d) # количество пар в словаре
Слайд 19словарь (dict)
Генератор словарей
Слайд 20множество (set)
Множество в python - "контейнер", содержащий не повторяющиеся элементы
в случайном порядке.
>>> a = set()
>>> a
set()
>>> a = set('hello')
>>>
a
{'h', 'o', 'l', 'e'}
>>> a = {'a', 'b', 'c', 'd'}
>>> a
{'b', 'c', 'a', 'd'}
>>> a = {i ** 2 for i in range(10)} # генератор множеств
>>> a
{0, 1, 4, 81, 64, 9, 16, 49, 25, 36}
>>> a = {} # А так нельзя!
>>> type(a)
>> a = set()>>> aset()>>> a = set('hello')>>> a{'h', 'o', 'l', 'e'}>>> a = {'a', 'b', 'c', 'd'}>>> a{'b', 'c', 'a', 'd'}>>> a = {i ** 2 for i in range(10)} # генератор множеств>>> a{0, 1, 4, 81, 64, 9, 16, 49, 25, 36}>>> a = {} # А так нельзя!>>> type(a)">
>> a = set()>>> aset()>>>">
Слайд 21множество (set)
>>> words = ['hello', 'daddy', 'hello', 'mum']
>>> set(words)
{'hello', 'daddy',
'mum'}
Слайд 22файлы
Объекты этого типа предназначены для работы с внешними данными. В
простом случае - это файл на диске. Файловые объекты должны
поддерживать основные методы: read(), write(), readline(), readlines(), seek(), tell(), close() и т.п.
Следующий пример показывает копирование файла:
f1 = open("file1.txt", "r")
f2 = open("file2.txt", "w")
for line in f1.readlines():
f2.write(line)
f2.close()
f1.close()
Чаще используют библиотеку urllib
Слайд 26цикл while
f = open("file.txt", "r")
while f:
l = f.readline()
if
not l:
break
if len(l) > 5:
print
l
f.close()
Слайд 27цикл for
for i in range(1, 10):
for j in range(1,
10):
print("%2i" % (i*j))