1.79M
Category: programmingprogramming

1.2 Презентация

1.

ПРОГРАММИРОВАНИЕ НА Python

2.

Модуль 1. Введение в Python
Тема 1.2 Ввод-вывод и базовые типы данных

3.

Содержание
1. Вывод в консоль. Функция print( )
2. Ввод и операция присваивания
3. Переменные
4. Именованные константы

4.

Тема 1.2. Ввод-вывод и базовые типы данных
1. Вывод в консоль. Функция print( )

5.

Первая программа на Python
Традиционно, первая программа на любом языке программирования - это "Hello, World!". Не будем
нарушать традиций.
Для вывода на экран используется функция print(). Место вывода - консоль интерпретатора.
Внутри круглых скобок через запятую указывается то, что необходимо вывести на экран.
Если это текст, обрамляем его кавычками - одинарными, или двойными. Главное, чтобы текст начинался и
заканчивался кавычками одного типа. Команда print (функция) записывается только строчными буквами,
другое написание недопустимо, так как в Python строчные и заглавные буквы различны. Так же не следует
использовать пробелы перед открывающейся скобкой, так как это противоречит стандарту PEP8. О стандартах
поговорим дополнительно.

6.

Первая программа на Python
# Это комментарий
# Напишем простейшую программу.
# На экран будет выведена строка Hello, Python
print("Hello, Python!")
# Немного изменим программу:
print('Hello,', 'World!')
print('Hello,', 'Python!')
# В данном случае мы внутри команды указали две строки.
# Каждую заключили в кавычки и разделили запятой.

7.

Именованные аргументы print( )
Из предыдущего примера видно, что функция print при выводе разделяет аргументы пробелами, а в конце
переходит на новую строчку. Но это не всегда удобно.
Для тонкой настройки вывода у функции print существуют необязательные именованные аргументы sep=‘ ',
end=‘\n’. Именованные аргументы ставятся в самом конце перечня передаваемых в функцию параметров.
Значения по умолчанию “ ” (пробел) и “\n”(перевод строки) соответственно.
По стандарту PEP8 при использовании именованных аргументов знак = не выделяется пробелами с двух сторон.
Для получения подробной информации по встроенным функциям языка Python можно выполнить команду:
help(print)

8.

Именованные аргументы print( )
Поменяем значения именованных параметров:
print("Hello", sep=' ', end='*')
print("Hello", sep=' ', end='*')
print("Hello", sep=' ', end='*’)
sep — разделитель аргументов (по умолчанию пробел) и end — то, что выводится после вывода всех
аргументов (по умолчанию символ начала новой строки).
Например, если end сделать пустой строкой, то print не перейдет на новую строчку, и следующий print
продолжит вывод прямо на этой же строке.
print('При', end='')
print('вет!')
print('Раз', 'два', 'три', sep='--')

9.

Экранирующая последовательность
Если внутри кавычек встречается символ \ — обратная косая черта, обратный слеш, бэкслеш, он вместе с
идущим после него символом образует экранирующую последовательность (escape sequence) и воспринимается
интерпретатором как единый специальный символ.
В частности, \n — символ начала новой строки.
Кроме того,
● \t — табуляция,
● \' — кавычка,
● \\ — просто бэкслеш.
Использование экранирующих
экранированием.
последовательностей
вместо
специальных
символов
называется
их

10.

Экранирующая последовательность
print('Произведение А.С. Пушкина "Евгений Онегин"')
print('Произведение А.С. Пушкина \'Евгений Онегин\'')
print('восход\t04:04\nзакат\t20:53')
print('print(\'восход\\t04:04\\nзакат\\t20:53\')')

11.

"Cырые" (r-строки)
Если приписать букву r перед открывающей строку кавычкой, бэкслеши будут считаться обычными символами.
print("Файл на диске c:\\\\")
print(r"Файл на диске c:\\")
Использование сырых строк помогает там, где не нужны специальные символы форматирования, а вот
экранируемые бэкслэшами символы используются. Например, при описании полного пути к файлы в папках.
Использование экранирования может сильно запутать разработчика. Кроме того, есть такие синтаксические
конструкции, где по-другому нельзя – это регулярные выражения, с которыми мы познакомимся далее в этом
курсе.

12.

Преформатированные строки
А если открывать и закрывать строку не одной, а тремя кавычками подряд, внутри можно делать обычные
переводы строки (внутри одинарных кавычек так делать нельзя).
print("""Есть всего два типа языков программирования:
те, на которые люди всё время ругаются,
и те, которые никто не использует.
Bjarne Stroustrup
""")
Кроме того, строки с тройными парными кавычками можно использовать в качестве многострочного
коментария, а сам Python использует их для формирования объекта __doc__ - первый такой многострочный
коментарий содержит описание функции (PEP257):
print(print.__doc__)

13.

Тема 1.2 Ввод-вывод и базовые типы данных
2. Ввод и операция присваивания

14.

Команда input( )
Ранее наши программы выводили на экран только фразы, известные в момент написания кода. Данные,
вставленные непосредственно в код программы принято называть литералами.
Но программы могут работать и с данными, которые станут известны только во время выполнения: например, их
будет вводить пользователь с клавиатуры. Реализовать это можно так:
print('Как тебя зовут?')
name = input()
print('Привет,', name)
Команда input() всегда записывается c круглыми скобками. Работает так: когда программа доходит до места,
где есть input(), она ждет, пока пользователь введет строку с клавиатуры (ввод завершается нажатием
клавиши <Enter>). Введенная строка подставляется на место input(). Т.е. input() получает от пользователя
какие-то данные и в место вызова подставляет строковое значение, в нашем случае записывает его в качестве
значения переменной с символическим именем name.

15.

Операция и оператор присваивания
Знак = используется в Python для обозначения операции присваивания значения переменной.
А сам знак равно «=» называют оператором присваивания.
Оператор присваивания бинарный. Это значит, что справа и слева от него обязательно должны быть его
операнды.
Текст, который мы печатаем перед считыванием данных в некоторых случаях нужен чтобы пользователь, который будет вводить данные
понимал, что именно от него требуется. Поскольку это достаточно распространённый сценарий, то в языке Python можно выводить текстовый
промпт, передавая его в качестве параметра в команду input(). Предыдущий код можно переписать так:
name = input('Как тебя зовут? ')
print('Привет,', name)

16.

Тема 1.2 Ввод-вывод и базовые типы данных
3. Переменные

17.

Имена переменных в Python и PEP8
Переменная в Python – это область в оперативной памяти, к значению которой предоставляется доступ по
имени.
Программы на Python оперируют данными, которые хранятся в оперативной памяти до окончания работы кода.
В рассмотренном примере name - это (символическое) имя переменной.
1. Имя переменной не может содержать пробелы.
2. Первый символ должен быть одной из букв от а до z, от А до Z либо символом подчеркивания (_).
3. После первого символа можно использовать буквы от а до z или от А до Z, цифры от 0 до 9 либо символы
подчеркивания.
4. Символы верхнего и нижнего регистров различаются. Это означает, что имя переменной itemsOrdered не
является тем же, что и itemsordered.
5. Имя переменной должно отражать ее назначение.
6. Имя переменной не должно совпадать полностью с одним из зарезервированных слов.
PEP8: Для именования переменных принято использовать стиль lower_case_with_underscores (слова из
строчных букв с подчеркиваниями).

18.

Список зарезервированных слов
В каждом языке есть зарезервированные слова. Такие слова имеют специальное значение, и поэтому
запрещены для использования в качестве имён переменных.
Вот список зарезервированных слов для Python:
as, assert, break, class, continue, def, del, elif, else, except, False, finally,
for, from, global, if, import, in, is, lambda, None, nonlocal, not, or, pass,
raise, return, True, try, while, and, with, yield
Кроме того, можно совершенно случайно угадать и использовать имя уже существующей функции Python в
качестве имени переменной. Естественно, функцию после этого использовать не удастся:
input = 15
print(input)
a = input()

19.

Стандарты написания кода
Популярность Python снискал во многом благодаря простому синтаксису, доступному для освоения даже
неопытными разработчиками.
Однако, использование упрощенного синтаксиса может привести к хаосу, снижению читаемости кода не только
другими разработчиками, но и самим автором. Для упорядочения стиля кодинга на Python применяют своды
рекомендаций PEP (от англ. Python Enhancement Proposals - предложения по улучшению Python).
Эти рекомендации не носят обязательного характера, их нарушение не приводит к ошибкам исполнения кода.
Однако хорошим стилем является следование им. Кроме того, они обеспечивают лучшую удобочитаемость и
переносимость кода.
Со всеми PEPs можно ознакомиться на официальном сайте: https://peps.python.org/

20.

PEP8
Наиболее часто упоминаемым является PEP8, который устанавливает стандарты стилистики кода. Так, например,
после запятой, согласно стандарту PEP8, обязательно нужно добавлять пробел.
Итак, PEP8 существует, чтобы улучшить «читабельность» кода.
Соблюдение PEP8 особенно важно, если вы в поисках вакансии Python-разработчика. Чистый и читаемый код
показывает высокий профессионализм. Он говорит работодателю о вашем понимании правильного
структурирования программного кода.
Основные правила PEP8:
1. Не использовать одиночные буквы l, O, или I в качестве каких-либо имен из-за риска спутать их с 1 и 0, в
зависимости от шрифта.

21.

PEP8
2. Используйте Стили именования:

22.

PEP8
3. Окружите функции и классы верхнего уровня двумя пустыми строками.
4. PEP8 предлагает ограничить длину строки 79 символами (ширина текстового окна стандартного монитора 80
символов).
5. Используйте отступы корректно:
● используйте четыре последовательных пробела для отступа;
● отдавайте предпочтение пробелам, а не табуляции.
6. Используйте комментарии для документирования кода в том виде, в каком он написан.
Есть и другие важные правила, которые мы изучим по мере продвижения в нашем курсе.

23.

Значение переменной
Значение переменной — то, что хранит в себе переменная.
Знак «=» обозначает «оператор присваивания».
Оператор присваивания присваивает значение, которое находится справа от знака равно, переменной, имя
которой находится слева от знака равно.
В случае с вводом из консоли - это строка. То есть переменная сохраняет в себе строковое значение. Говорят, что
переменная строкового типа.
PEP8: Всегда окружайте оператор присваивания одним пробелом с каждой стороны:

24.

Оператор "Морж"
ЭТОТ РАЗДЕЛ ДЛЯ УГЛУБЛЕННОГО ИЗУЧЕНИЯ
В Python есть много различных необязательных, но очень удобных синтаксических конструкций, которые
ускоряют кодинг. Все они носят собирательное название "синтаксический сахар". Без них вполне можно
обходиться, используя другие алгоритмические конструкции, но тогда код становится более длинным и менее
понятным.
Одним из таких приёмов является оператор "Морж" (англ. walrus assignment), названный так от сходства
синтаксической записи со смайликом моржа: :=.
"Моржа" можно применять для сокращения записи там, где обычная операция присваивания не допускается например, в параметрах вызова функции:
print(res := input("Введите число: "), type(res))
Данный код может быть записан в следующем виде:
res = input("Введите число: ")
print(res, type(res) )

25.

Утиная типизация
В Python используется так называемая «утиная типизация». Происхождение данного термина идет от фразы:
«Если это выглядит как утка, плавает как утка и крякает как утка, то это, вероятно, и есть утка»
Утиная типизация – это концепция, характерная для языков программирования с динамической типизацией,
согласно которой конкретный тип или класс объекта не важен, а важны лишь свойства и методы, которыми этот
объект обладает.
Другими словами, при работе с объектом его тип не проверяется, вместо этого проверяются свойства и методы этого объекта. Такой подход
добавляет гибкости коду, позволяет полиморфно работать с объектами, которые никак не связаны друг с другом и могут быть объектами разных
классов. Единственное условие, чтобы все эти объекты поддерживали необходимый набор свойств и методов.
То есть, нет необходимости прописывать переменную, как переменную определённого типа. Пока её значение подходит к нужному типу, а
операции, которые вы пытаетесь с ней проделать также подходящие, ошибки не будет.
Утиная типизация "DuckTyping" настолько глубоко заложена и распространена в Python, что очень часто проще сделать предположение
поведении объектов, вместо проверки их типов.

26.

Как устроены переменные внутри
Каждый элемент данных в Python является объектом определенного типа или класса. Например:
name = 'Ivan Doberman'
print(type(name))
# строковая переменная
print(id(name))
# адрес объекта
a = 123
print(type(a))
print(id(a))
# целочисленная переменная
# адрес объекта
Когда, в процессе выполнения программного кода, появляется новое значение, интерпретатор выделяет для него область памяти – то есть
создаёт объект определенного типа (число, строка и т.д.). После этого Python записывает в свой внутренний список адрес этого объекта.
Но как теперь получить доступ к созданному объекту?
Для этого и существуют переменные – они дают возможность удобно работать с объектами используя имена вместо адресов. То есть, обращаясь
к переменной в Python по имени, мы получаем доступ к области памяти с хранящимся в ней объектом.

27.

Принцип работы переменных
Для понимания работы переменных, разберемся, что
происходит, когда мы создаем новую переменную и
присваиваем ей значение:
a = 1000
В данном примере происходит следующее:
• создается объект типа int со значением 1000;
• создается переменная с именем a;
• имя a ссылается на адрес (ссылку) на объект.

28.

Принцип работы переменных
Теперь посмотрим, что произойдет, если одной переменой
присвоить другую переменную:
b = a
print(id(a))
print(id(b))
В данном примере Python не создает новый объект – он просто создает имя,
которое ссылается на тот же объект, что и переменная a.

29.

Принцип работы переменных
Предположим, что в какой-то момент мы захотели поменять
значение переменной b:
b = 500
print(id(a))
print(id(b))
В данном примере Python создал новый объект типа int, и теперь переменная
b ссылается на новый объект.

30.

Принцип работы переменных
Так происходит потому, что тип int в Python относится к неизменяемым типам.
a = 1000
print(a, type(a), id(a))
a = 1001
print(a, type(a), id(a))
Python использует одно имя, но разные ячейки памяти.
Тип определяется присваиваемым значением - под него Python выделяет необходимое место. Но кроме неизменяемых типов в Python есть еще
и изменяемые. А с ними эти операции могут иметь другой результат.

31.

Принцип работы переменных
Рассмотрим еще один пример с неизменяемым типом:
b = "tree"
print(id(b))
В этом примере создается новый объект типа str, и переменная b ссылается
на новый объект.
b = "tree", переменная b теперь ссылается на новый объект строкового
типа.
На объект типа int со значением 500 больше никто не ссылается.
Следовательно, он больше не доступен и будет удален сборщиком мусора (тем
самым освободим немного памяти).

32.

Идентификатор объекта (Object Identity)
ЭТОТ РАЗДЕЛ ДЛЯ УГЛУБЛЕННОГО ИЗУЧЕНИЯ

33.

Идентификатор объекта
Идентификатор объекта – это адрес объекта в памяти.
В примерах выше мы вызывали функцию id(). Эта функция возвращает число, которое является неизменным
и уникальным для каждого объекта на протяжении его жизненного периода:
a = b = 1
print(id(a))
print(id(b))
print(id(1))
Видно, что объект здесь всего один. А a и b – по-разному названные переменные, которые на него ссылаются.
Проверить равенство идентификаторов можно с помощью оператора is
print(a is b)

34.

Кэшированные данные
Python хранит некоторые наиболее употребимые данные, такие как целые числа в интервале от `-5` до `256` в
ячейках с постоянными адресами. Поэтому при присваивании этих значений переменным может показаться,
что несмотря на явное указание на создание независимых переменных, интерпретатор будет создавать лишь
новые имена.
a = 10
b = 10
print(id(a), id(b))
a = 11
b = 11
print(id(a), id(b))

35.

Тема 1.2. Ввод-вывод и базовые типы данных
4. Именованные константы

36.

Именованные константы
Именованная константа – это имя, представляющее значение, которое не изменяется во время выполнения
программы.
Допустим, вы хотите вычислить длину окружности length по радиусу radix:
radix = 2
length = 3.141592 * radix
Далее, вы хотите посчитать площадь круга area с тем же радиусом:
area = 3.14 * radix ** 2
Постоянная величина пи, равная 3.141592 и 3,14 соответственно, используется вами дважды, но с разным
значением.
Эта проблема могут быть решена при помощи именованных констант, которые заменяют конкретные числа.

37.

Именованные константы
Вот пример объявления именованной константы в программном коде:
PI = 3.141592
По соглашениям PIP8 именованные константы записывают заглавными буквами.
Никаких других механизмов защиты значения в Python нет. Поэтому существование констант - это просто
соглашение.
Вообще в Python можно переопределить практически всё, за исключением, возможно, методов базовых
классов. Поэтому использование этой гибкости должно основываться на аккуратности.

38.

© Московский физико-технический институт
2025
English     Русский Rules