Основы синтаксиса
Типы данных в 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
|
Модули
Все функции, как стандартной библиотеки, так и и сторонних организованы в модули
Для подключения модулей используется ключевое слово 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
— печатает текст в консоли. Принимает произвольное число аргументов, производного типа, если объект не строка, то у него вызывается метод
__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:'))