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


Основы синтаксиса

Типы данных в Python, которые мы будем рассматривать в начале курса, можно организовать так:

  • Типы
    • Базовые
    • Составные
      • Перечисляемые

Некоторые базовые типы данных

Тип Описание Примечание Пример
int Целое число Длина не ограничена (при выходе за пределы машинного long int включается «длинная» арифметика) 42
float Число с плавающей запятой Машинный double точнее в sys.float_info 3.14159
str Строка символов Типа «символ» нет, символ — это строка из одного символа
"привет"
bytes Байтовая строка Типа «байт» нет, байт — это байтовая строка из одного символа
b"hell\x00"
bool Логический тип Значения True и False True
NoneType Пустой объект Единственное значение None None

Новая переменная создается при каждом присваивании.

Присвоение значений и динамическая типизация

Переменные объявляются в момент присвоения значения

# Комментарий: Тип переменной определяется по правой части выражения
a = 5
b = 5.5
c = "привет"
d = b"\x00\x7f\x2e"
e = True
f = None

При присваивании типы не проверяются

d = 42 # Успешно: d теперь имеет тип int и значение 42

При выполнении прочих операций типы проверяются

d = a + c # Ошибка: нельзя выполнить + для типов int и str

Строки

s = "привет '!' "
s = 'привет "!" '
s = '''привет
я длинная строка'''
s = 'Строка \nс экранированием\n'
s = r'Строка без \n экранирования'
s = b'Byte String - Only Ascii and \x24'

Распространенные непечатные символы

Символ Значение
\n Новая строка
\t Табуляция
\r Возврат каретки
\u???? Символ Unicode: ???? — код символа (для строк)
\x?? Байт ?? — код байта (для байтовых строк)
\\ Символ \

Проблемы с экранированием возникают при работе с именами папок в Windows.

Функций, операторы, модули

Функции

Функции вызываются стандартно:

print("Привет!")

Могут принимать:

# Аргументы по порядку
foo(1,2,"test")

# Аргументы по имени
bar(arg = 2, namedarg = "hello")

# Способы передачи аргументов можно смешивать
bar(1, 2, arg = 2, namedarg = "hello")

Функция может возвращать одно или несколько значений, а также None.

loo(24)

x = foo(24)

x,y,t = bar(42)

Некоторые важные функции

Функция Назначение
len(x) Длина x, например строки, возвращает int
abs(x) Модуль x
type(x) Тип данных x, возвращает тип
print(x) Печать на экран x, возвращает None
input(x) Ввод пользователя, x в качестве приглашения, возвращает str

Операторы

Об операторах надо думать, как об упрощенной форме записи вызовов функций:

y = 1+2*3 # тоже, что и y = __add__(1,__mult__(2,3))

Операторы и вызовы функций можно свободно смешивать:

y = 2*len(x)+1

Многие операторы имеют сокращенную форму записи:

y = y + 1
y += 1

Арифметические операторы

Оператор Действие Пример
+
Сложение для int/float, конкатенация для str/bytes
2+5, "a"+"b"
-
Вычитание для int/float
2-5
*
Умножение для int/float, повторение если str/bytes умножается на int
2*5, "a"*2
/
Деление для int/float результат всегда float
2/5
**
Возведение в степень для int/float
2**5
//
Цельночисленное деление для int/float
2//5
%
Остаток от деления для int/float, операция подстановки для str
2%5,
 "hello %s" % "world"

Логические операторы

Оператор Действие Пример
not
Логическое НЕ для bool
not x
and
Логическое И для bool
x and y
or
Логическое ИЛИ для bool
x or y
==
Равенство, возвращает bool
x == y
>, <, >=, <=
Неравенство, возвращает bool
x >= y
is, is not
Тождество, возвращает bool
x is y

Операторы над составными типами

Оператор Действие Пример
.
Обращение к полю или методу объекта
data.x, data.foo(2)
[x]
Индексирование
data[x]
in, not in
Содержание, возвращает bool
x in data

Подробнее: https://docs.python.org/3/reference/expressions.html

Модули

  • Все функции, как стандартной библиотеки, так и и сторонних организованы в модули
  • Для подключения модулей используется ключевое слово import
  • Для доступа к методам используется оператор .
  • Аналогично происходит импорт из одного файла в другой

import math
math.cos(3) # Успешно: вызван метод ''cos'' модуля ''math''
cos(3) # Ошибка: метода ''cos'' неизвестен

from math import cos
cos(3) # Успешно: вызван метод ''cos'' модуля ''math''

import math as m
m.cos(3) # Успешно: вызван метод ''cos'' модуля ''math''

Приведение типов

Типы автоматически не приводятся. Типы int, float и bool можно смешивать в арифметических выражениях. Результат будет определяться наиболее емким типом (float > int > bool).

Исходный тип — переменная x
Целевой тип int float str bytes bool
int = round(x), ceil(x)¹, trunc(x)¹ int(x) unpack(fmt,x)² int(x)
float float(x) = float(x) unpack(fmt,x)² float(x)
str str(x) str(x) = x.decode(encoding) str(x)
bytes pack(fmt,x)² pack(fmt,x)² x.encode(encoding) = pack(fmt, x)²
bool bool(x) bool(x) bool(x) bool(x) =

¹ — из модуля math

² — из модуля struct

Функции print, input

Важные глобальные функции для работы в консоли:

print — печатает текст в консоли. Принимает произвольное число аргументов, производного типа, если объект не строка, то у него вызывается метод

__str__

.

a = 25
print("тест: ", a , " - ", 3.158)
#тест:  25  -  3.158
#

Дополнительные аргументы: sep — разделитель, по умолчанию пробел, end — конец строки, по умолчанию \n.

a = 25
print("тест: ", a , " - ", 3.158, sep=";", end="\nконец.\n")
#тест: ;25; - ;3.158
#конец.
#

input — запрашивает ввод пользователя, до нажатия Enter.

x = input('Введите x:')

Возвращает str:

x = float(input('Введите x:'))