Основы Python. Часть 1#

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

# Комментарий
a = 5
b = 5.5
c = "привет"
d = b"\x00\x7f\x2e"
e = True
f = None

При повторном присваивании типы не проверяются, а создается новая переменная с тем-же именем.

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

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

# d = a + c # Ошибка

Можно смешивать переменные разных числовых типов в одном выражении

 q = a + b # Успешно: d теперь имеет тип float и значение 27.5

Строки#

Способы записи строк#

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

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

Символ

Значение

\n

Новая строка

\t

Табуляция

\r

Возврат каретки

\u????

Символ Unicode: ???? — код символа (для строк)

\x??

Байт ?? — код байта (для байтовых строк)

\\

Символ \

Проблемы с экранированием возникают при работе с регулярными выражениями и именами папок в Windows:

# pth = 'C:\new_files\ret_id' # Ошибка \n и \r недопустимы в имени папки
pth = 'C:\\new_files\\ret_id' # Все хорошо
pth = r'C:\new_files\ret_id' # Все хорошо
# pth = 'C:\files\ ' # Ошибка экранированный символ \' в конце строки \'
pth = 'C:\files'  # Все хорошо

Вызов функций и операторы#

Вызов функций#

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

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

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

# Аргументы по порядку
print(1, 2, "test")
# Аргументы по имени
print(sep = ";", end = "?")
1 2 test
?

Способы передачи аргументов можно смешивать, но аргументы по порядку должны идти в начале

print(1, 2, sep = "-") # Правильно
# print(sep = "-", 1, 2) # Ошибка
1-2

Возвращаемые значения#

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

def foo(x):
    return x*x

foo(24)
x = foo(24)

def bar(x):
    return x*x, x+x, x**x

x,y,t = bar(42)

Некоторые встроенные функции#

Функция

Назначение

len(x)

Длина перечисляемого x, например строки или списка, возвращает int

type(x)

Тип данных x, возвращает специальный объект — тип

print(x)

Печать на экран x, возвращает None

Операторы#

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

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

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

y = 2*len("test")+1
y = len("test" + "code")

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

y = y + 1
y += 1

Некоторые операторы#

Оператор

Тип данных

Действие

Пример

+

Числовые

Сложение

2+5

+

Перечислимые

Конкатенация

"a"+"b"

-

Числовые

Вычитание

5-2

*

Числовые

Умножение

2*5

*

Числовые

Повторение

"a"*5

**

Числовые

Возведение в степень

2**5

/

Числовые

Деление тип результата всегда действительное число

5/2

//

Числовые

Деление нацело

5//2

%

Числовые

Остаток от деления

5%2

%

Строки

Подстановка

"hello %s" % "world"

Python позволяет смешивать переменные разных числовых типов в одном выражении, при этом тип результата определяется наиболее содержательным типом.

Операторы сравнения#

Применяются для определения условий. Результат имеет тип bool.

Оператор

Действие

Пример

==

Равно

x == 3

!=

Не равно

x != 3

>

Больше

x > 3

<

Меньше

x < 3

>=

Больше или равно

x >= 3

<=

Меньше или равно

x <= 3

is

Тождество переменных

x is True

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

Применяются для объединения логических выражений. Результат имеет тип bool.

Оператор

Действие

Пример

not

Логическое НЕ

not x > 1

and

Логическое И

x > 1 and x < 3

or

Логическое ИЛИ

x > 3 or x < 1

Побитовые операторы#

Применяются для битовой арифметики над целыми числами или для операций над массивами numpy. a = 25 print(«тест:», a , «-», 3.158)

Оператор

Действие

Пример

~

Побитовое НЕ

~x

&

Побитовое И

x & 3

\

Побитовое ИЛИ

`x

^

Побитовое исключающее ИЛИ

x ^ 3

Загрузка модулей#

Почти все функции как стандартной библиотеки, так и и сторонних организованы в модули

Для подключения модулей используется ключевое слово import

Для доступа к методам используется оператор .

import numpy
numpy.cos(3) # Успешно
# cos(3) # Ошибка
np.float64(-0.9899924966004454)
from numpy import cos
cos(3) # Успешно
np.float64(-0.9899924966004454)
import numpy as np
np.cos(3) # Успешно
np.float64(-0.9899924966004454)

Важные модули стандартной библиотеки#

Модули

Возможности

sys

Служебные функции интерпретатора, аргументы командной строки, выход

os, shutils

Операции с файлами и папками, переменные окружения, запуск сторонних программ

glob, Path

Операции с путями к файлам

math, statistics

Базовые математические функции. Мы их использовать не будем

random

Генерация случайных чисел и последовательностей

struct

Работа с бинарными структурами

datetime

Работа с датой и временем

copy

Копирование составных объектов

pprint

Улучшенный print

pickle

Сохранение объектов Python в файлы

Важные сторонние модули доступные в pip#

Модули

Возможности

numpy

Эффективные методы для работы с числовыми данными

scipy

Коллекция математических методов

matplotlib

Рисование графиков

pandas

Таблицы данных

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

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

Исходный тип

Целевой тип

Способ приведения для переменной x

Пример

int, float, str, bytes

bool

bool(x)

bool(42)

bool, str

int

int(x)

int("42")

float

int

round(x)

round(123.456)

bytes

int

struct.unpack(fmt, x)

struct.unpack('I',b'\x2f\x00\x00\x00')[0]

bool, int, str

float

float(x)

float("3.4")

bool, int, str

bytes

struct.unpack(fmt,x)

struct.unpack('f',b'\xc3\xf5H@'')[0]

bool, int, float

str

str(x)

int

str

fmt % x

'%04d' % x

float

str

fmt % x

'%6.2f' % x

bytes

str

x.decode(encoding)

x.decode('utf8')

Функция print#

Функция print — печатает текст в консоли. Принимает произвольное число аргументов, производного типа, если аргумент не строка, то у него вызывается метод __str__(), а при отсутствии потом __repr__() (есть у всех переменных всех типов). Таким образом print так или иначе выведет на печать переменную любого типа.

print("тест:", 24 , "-", 3.158, print)
тест: 24 - 3.158 <built-in function print>

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

print('a', 1, 'b', '2', sep=';', end='<==\n')
a;1;b;2<==

Условия и циклы#

Одной из главных особенностей Python является использование пробелов для оформления блоков операторов:

if a > 0:
    b = 2

Условный оператор if#

if 〖логическое выражение〗:
    〖операторы〗
else:
    〖операторы〗

Примеры:

a,b,c = 1,2,3

if a > 0:
    b = 2
else:
    b = 3
    print(b)
if a > 0:
    if c > 0:
        print("a > 0 и c > 0")

if a > 0 and c > 0:
    print("a > 0 и c > 0")
a > 0 и c > 0
a > 0 и c > 0
if a > 0:
    print("a > 0")
elif a >= -2:
    print("a >= -2")
else:
    print("a < -2")
a > 0

Условный цикл while#

while 〖логическое выражение〗:
    〖операторы〗

Примеры:

x = 5
while x > 0:
    print(x)
    x = x - 1
5
4
3
2
1
x = 5
while True:
    print(x)
    if x < 0:
        break
    x = x - 1
5
4
3
2
1
0
-1
x = 5
while x > -3:
    x = x - 1
    if x > 0:
        continue
    print(x)    
0
-1
-2
-3