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

Инструменты сайта


Боковая панель

subjects:programming:python:start

Python 3

FIXME

Философия

  • Явное лучше неявного.

Полный текст философии Python доступен по команде:

import this

В отличие от девиза Perl 1), Python придерживается философии «должен существовать один — и, желательно, только один — очевидный способ сделать это».

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

Эквивалент null в Python: None

Проверка:

null_variable = None
if null_variable is None:
    <действия>

На Python предпочтительный метод отступов — пробелы (4 шт.). Сочетание отступов пробелами и табуляцией — недопустимо! Лучше настроить IDE на автоматическую конвертацию.

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

print('aaaaa',
        'bbbbb', 3)
## aaaaabbbbb3

Виртуальное окружение Python: venv

Создание

Команда создания в каталоге проекта:

python3 -m venv virt.py3

Где virt.py3 — название окружения/создаваемого каталога.

Использование

Команда активации в каталоге проекта:

source ./virt.py3/bin/activate

Теперь, все установленные модули будут только в виртуальном окружении, а не в основной системе.

Установка:

python3 -m pip install module_name

Проверка установленных модулей:

pip list

Команда деактивации:

deactivate

Импорт

Каждый импорт, как правило, должен быть на отдельной строке.

import os
import sys as sys
import datetime as dt
import urllib.request as askurl

где sys, dt, askurl - новые имена

Операции

  • + — сложение чисел/строк
  • - — вычитание
  • * — умножение числа или дублирование строки
  • ** — возведение в степень
  • pow(x,y[,z]) — $x^{y}$ по модулю (если модуль задан) = x**y % z
  • / — деление
  • // — частное от деления нацело — аналог div
  • % — остаток от деления нацело — аналог mod
  • divmod(x, y) — Возвращает пару значений (x//y, x%y).
    Invariant: div*y + mod == x.
  • abs() — Модуль числа
  • != — проверяет неравенство значений двух объектов.
  • == — проверяет равенство значений двух объектов.
  • is — проверяет идентичность самих объектов, включая тип объекта (аналог === :?:).
  • = — присвоение.
  • := — моржовый (walrus) оператор, появившийся в Python 3.8, дает возможность решить сразу две задачи: присвоить значение переменной и вернуть это значение.
    habr.com/post/555924/
    print(num := 15)
    # 15

Сравнение

Операторы сравнения в Питоне можно объединять в цепочки:

print(a == b == c);
print(1 <= x <= 10);

Логические

Логические операторы: and, or, not.

Округление

  • round(x) — Округляет число до ближайшего целого. Если дробная часть числа равна 0.5, то число округляется до ближайшего четного числа.
  • round(x, n) — Округляет число x до n знаков после точки. Это стандартная функция.

Преобразование типов (основное)

Основные типы переменных в Python: int, float, str.

  • bool() — из строки в Логическое
  • complex([real[, imag]]) — преобразование к комплексному числу.
  • float() — из строки к числу с плавающей точкой.
  • str([object], [кодировка], [ошибки]) — строковое представление объекта.
  • int([object], [основание системы счисления]) — преобразование из строки к целому числу. По умолчанию система счисления десятичная. Округляет до целого.
  • bin() — из целого числа в двоичную строку.
  • oct() — из целого числа в восьмеричную строку.
  • hex() — из целого числа в шестнадцатеричную строку.
print(int(bin(125), 2));
# 125

range

  • range([start=0], stop, [step=1]) — арифметическая прогрессия от start до stop с шагом step.

Срезы

  • item[START:STOP:STEP] - берёт срез от номера START, до STOP (не включая его), с шагом STEP. По умолчанию START = 0, STOP = длине объекта, STEP = 1.
a = [1, 3, 8, 7]
print(a[1:])
# [3, 8, 7]
print(a[::-1])
# [7, 8, 3, 1]
 
s = 'str'
print(s[1:])
# 'tr'
print(s[::-1])
# 'rts'

Ввод/вывод

  • input() — ввод, считывает одну строку целиком.
  • print() — вывод, с переводом строки
  • print(<строка>, sep=';', end='') — вывод, С заменой разделителя на «;» и БЕЗ перевода строки
n = input('input text')
print('text:', n)

Файл

open(name [,mode [,bufsize [, encoding [, errors [, newline [, closefd]]]]]])

  • encoding — имя кодировки символов, например: ‘utf-8’ или ‘ascii’
  • errors — политика обработки ошибок, связанных с кодировкой символов
  • newline — порядок работы в режиме поддержки универсального символа перевода строки и может принимать значения: None, ‘’, ‘\n’, ‘\r’ или ‘\r\n’
    • значение None — любые символы окончания строки, такие как ‘\n’, ‘\r’ или ‘\r\n’, преобразуются в ‘\n’
    • значение ‘’ (пустая строка) — любые символы окончания строки распознаются, как символы перевода строки, но в исходном тексте остаются в первоначальном виде
    • Если аргумент newline имеет любое другое допустимое значение, оно будет использоваться для преобразования символов окончания строки
  • Аргумент closefd определяет, должен ли в действительности закрываться дескриптор файла при вызове метода close(). По умолчанию имеет значение True.
mode Действие:
‘+’открытие на чтение и запись
‘r’открытие на чтение (по умолчанию)
Виды записи:
‘w’открытие на запись, содержимое файла удаляется,
если файла не существует, создается новый
‘x’открытие на запись,
если файла не существует, иначе исключение
‘a’открытие на дозапись, информация добавляется в конец файла
Содержимое:
‘b’открытие в двоичном режиме
‘t’открытие в текстовом режиме (по умолчанию)

:!: После окончания работы с файлом его обязательно нужно закрыть с помощью метода close().

Чтение из файла
f = open('text.txt', 'rt')
for line in f:
    print(line)
f.close()
 
# 'Hello world!\n'
# '\n'
# 'The end.\n'
# '\n'
Запись в файл
l = ['aa', 'bb', 'c\nc', 'd\td']
f = open('text.txt', 'wt')
for i in l:
    f.write(i + '\n')
f.close()
with … as …

Для чего применяется конструкция with … as? Для гарантии того, что критические функции выполнятся в любом случае.

with open('newfile.txt', 'w', encoding='utf-8') as g:
    d = int(input())
    print('1 / {} = {} '.format(d, 1 / d), file=g)

И вы можете быть уверены, что файл будет закрыт вне зависимости от того, что введёт пользователь.

Условия

if

if (<условие>):
    <действие 1>
    <действие 2>
    ...
    <действие n>
if (<условие 1>):
    <действия>
elif (<условие 2>):
    <действия>
elif (<условие 3>):
    <действия>
else
    <действия>

Аналогом (в C++):

x = (1>0)?1:0;

будет (на Python):

x = 1 if (1>0) else 0

match/case

Начиная с Python 3.10, можно использовать конструкцию match/case. В более старых версиях — используйте конструкцию if-elif-…-elif-else.

Циклы

  • continue — начинает следующую итерацию, минуя оставшееся тело цикла.
  • break — досрочно прерывает цикл.
  • else — примененное сразу после цикла, проверяет, был ли произведен выход из цикла инструкцией break, или же “естественным” образом. Блок инструкций внутри else выполнится только в том случае, если выход из цикла произошел без помощи break.

while

while True:
    <действия>

for

for i in 'список':
    <действия>

Цикл от 1 до 6 с шагом 2, с использованием range():

for i in range(1, 6, 2):
    print(i, end='');
## 135

Функции

def add(x, y=0):
    return x + y

Обработка ошибок

try:
    value = collection[key]
except KeyError:
    return key_not_found(key)
else:
    return handle_value(value)

Основные модули стандартной библиотеки

FIXME

Модуль math

Модуль math для вычислений.

Функции (int, round, abs, pow, divmod) являются стандартными и не требуют подключения модуля math для использования.

  • Округление
    • floor(x) — Округляет число вниз («пол»), при этом floor(1.5) == 1, floor(-1.5) == -2
    • ceil(x) — Округляет число вверх («потолок»), при этом ceil(1.5) == 2, ceil(-1.5) == -1
  • Корни, логарифмы
    • sqrt(x) — Квадратный корень. Использование: sqrt(x)
    • log(x)Натуральный логарифм.
    • log(x, b) — Логарифм по основанию b.
    • e — Основание натуральных логарифмов e = 2,71828…
  • Тригонометрия
    • sin(x) — Синус угла, задаваемого в радианах
    • cos(x) — Косинус угла, задаваемого в радианах
    • tan(x) — Тангенс угла, задаваемого в радианах
    • asin(x) — Арксинус, возвращает значение в радианах
    • acos(x) — Арккосинус, возвращает значение в радианах
    • atan(x) — Арктангенс, возвращает значение в радианах
    • atan2(y, x) — Полярный угол (в радианах) точки с координатами (x, y).
    • degrees(x) — Преобразует угол, заданный в радианах, в градусы.
    • radians(x) — Преобразует угол, заданный в градусах, в радианы.
    • pi — Константа π = 3.1415…

Модуль os

Модуль os для взаимодействия с операционной системой.

Модуль platform

Модуль platform для получения информации о платформе (т.е. операционной системе).

Модуль sys

Модуль sys содержит функциональность, характерную для системы. Так список sys.argv содержит аргументы командной строки.

Модуль logging

Модуль logging для сохранения логов.

Полезные библиотеки и фреймворки

  • Matplotlib — библиотека на языке программирования Python для визуализации данных двумерной (2D) графикой (3D графика также поддерживается).
  • NumPy — Библиотека NumPy предоставляет реализации вычислительных алгоритмов (в виде функций и операторов), оптимизированные для работы с многомерными массивами.
  • PySimpleGUI — По сути, этот GUI-фреймворк берёт все популярные и хорошо зарекомендовавшие себя GUI-фреймворки (Tkinter, Qt, Remi, WxPython) и обёртывает их в единую библиотеку, которую просто изучить и затем собирать приложения. Вам даже не нужно писать определение класса, чтобы создать GUI-приложение!
    • github.com/PySimpleGUI/PySimpleGUI
    • habr.com/post/538324/
  • okama — okama is a library with investment portfolio analyzing & optimization tools. CFA recommendations are used in quantitative finance.
    • github.com/mbk-dev/okama
    • www.youtube.com/playlist?list=PLCf1wq6Imjcu6UF1igJbPziHwfPWWA4JZ

Полезные ресурсы

  • A Byte of Python: python.swaroopch.com
    • Укус Питона: wombat.org.ua/AByteOfPython
  • Интерактивный учебник языка Python (без регистрации): pythontutor.ru/lessons/while/problems/std_dev/
    • Ответы: pyanswer.site/zadacha-standartnoe-otklonenie/

Игровое обучение

  • CodeCombat codecombat.com/play
  • CodinGame www.codingame.com
  • Check iO checkio.org
1)
Принцип There is More Than One Way To Do It (TiMTOWTDI, pronounced Tim Toady) — всегда есть больше одного способа сделать это — девиз языка Perl.
subjects/programming/python/start.txt · Последние изменения: 2022/04/05 16:29 —

На главную страницу Обучение Wikipedia Тестирование Контакты Нашли ошибку? Справка

Записаться на занятия

Ошибка Записаться на занятия к репетитору

Телефоны:

  • +7 (910) 874 73 73
  • +7 (905) 194 91 19
  • +7 (831) 247 47 55

Skype: eduVdom.com

закрыть[X]
Наши контакты