This media is not supported in your browser
VIEW IN TELEGRAM
Streamlit позволяет создавать приложения для проектов машинного обучения с обманчиво простыми скриптами Python. Он поддерживает горячую замену, поэтому ваши обновления обновляются в процессе редактирования и сохранения файла. Все, что вам нужно, это ваш любимый редактор и браузер. Посмотрите на Streamlit в действии.
Python имеет ужасную репутацию, когда речь идет о возможности параллельных вычислений. Не обращая внимания на типичные рассуждения о его потоках и GIL (который обычно нормально работает), реальная проблема многопоточности Python не техническая, а педагогическая. Распространенные руководства о библиотеках threading и multiprocessing в целом неплохие, но тяжеловаты для понимания.
Именно по этой причине я написал статью в которой рассматриваются возможности multiprocessing, доступные каждому.
Читать статью
Именно по этой причине я написал статью в которой рассматриваются возможности multiprocessing, доступные каждому.
Читать статью
Telegraph
Multiprocessing в Python
Немного истории Модуль multiprocessing изначально был добавлен в Python 2.6. Этот модуль позволяет создавать процессы таким же образом, как при создании потоков при помощи модуля threading.
В общем, мы создали объединенный чат нескольких каналов для взаимопомощи в программировании и просто общения – @python_chat_ru
Wolfram for Python
Может быть, кому то из вас это будет полезно. Не так давно появилась библиотека, которая позволит напрямую и эффективно вызывать Wolfram Language из языка Python.
Я, например, иногда использую вольфрам для символьных вычислений.
WolframClientForPython под лицензией MIT, так что вы можете использовать ее по своему усмотрению.
А вот и оригинал статьи из блога вольфрам, где рассказывается как можно за несколько строк кода написать алгоритм обнаружения лиц.
Читать статью
Может быть, кому то из вас это будет полезно. Не так давно появилась библиотека, которая позволит напрямую и эффективно вызывать Wolfram Language из языка Python.
Я, например, иногда использую вольфрам для символьных вычислений.
WolframClientForPython под лицензией MIT, так что вы можете использовать ее по своему усмотрению.
А вот и оригинал статьи из блога вольфрам, где рассказывается как можно за несколько строк кода написать алгоритм обнаружения лиц.
Читать статью
GitHub
GitHub - WolframResearch/WolframClientForPython: Call Wolfram Language functions from Python
Call Wolfram Language functions from Python. Contribute to WolframResearch/WolframClientForPython development by creating an account on GitHub.
Комбинация значений
Мы уже кратко касались некоторых полезных функций в itertools. Теперь поговорим о функциях-итераторах, позволяющих комбинировать различные значения, меняя местами их составляющие. К их числу относятся такие методы как:
📌combinations;
📌combinations_with_replacement;
📌permutations;
📌product.
combinations
Первая функция по комбинированию отдельных элементов последовательности принимает два аргумента. Первый позволяет задать определенный объект, а второй – количество значений, которые будут присутствовать в каждом новом отрезке. В данном примере демонстрируется работа функции combinations библиотеки itertools при создании списка.
Как видно из кода, метод получает строку DOG, которая впоследствии раскладывается на отдельные символы. Далее происходит группировка по 2 буквы так, чтобы каждая новая выборка отличалась от всех существующих. Функция print выводит полученный список data на экран, отображая все сформированные пары символов D, O, G.
combinations_with_replacement
Более продвинутая вариация предыдущего итератора предоставляет программе возможность делать выборку из отдельных элементов с учетом их порядка. В следующем образце кода показано использование combinations_with_replacement с уже известными аргументами.
В результате работы программы, на экране отобразилось несколько групп элементов, не повторяющих порядок друг друга. При этом вполне могут использоваться одинаковые объекты, если их общее расположение не совпадает с предыдущими выборками.
permutations
Работа функции permutations модуля itertools в Python похожа на комбинацию со сменой порядка. Однако в ней не допускается размещение идентичных элементов в одной группе. Ниже приведен код, демонстрирующий поведение и результат выполнения этого метода в цикле for.
На выходе программа отображает несколько пар значений, так как в качестве второго аргумента функция получила 2. Важно заметить, что каждая новая выборка отличается от всех предыдущих только порядком, а общая последовательность может включать в себя группы, состоящие из одних и тех же значений, просто сменивших расположение.
product
Последний из комбинационных итераторов получает в качестве параметра массив данных, состоящий из нескольких групп значений. Функция product библиотеки itertools в Python 3 позволяет получить из введенной последовательности чисел или символов новую совокупность групп во всех возможных вариациях. Следующий пример показывает исполнение этого метода.
Таким образом, получается новая последовательность data, вмещающая в себя все возможные комбинации значений, полученных из начального списка.
#itertools #combinations
Мы уже кратко касались некоторых полезных функций в itertools. Теперь поговорим о функциях-итераторах, позволяющих комбинировать различные значения, меняя местами их составляющие. К их числу относятся такие методы как:
📌combinations;
📌combinations_with_replacement;
📌permutations;
📌product.
combinations
Первая функция по комбинированию отдельных элементов последовательности принимает два аргумента. Первый позволяет задать определенный объект, а второй – количество значений, которые будут присутствовать в каждом новом отрезке. В данном примере демонстрируется работа функции combinations библиотеки itertools при создании списка.
from itertools import combinations
data = list(combinations('DOG', 2))
print(data)
# Output: [('D', 'O'), ('D', 'G'), ('O', 'G')]
Как видно из кода, метод получает строку DOG, которая впоследствии раскладывается на отдельные символы. Далее происходит группировка по 2 буквы так, чтобы каждая новая выборка отличалась от всех существующих. Функция print выводит полученный список data на экран, отображая все сформированные пары символов D, O, G.
combinations_with_replacement
Более продвинутая вариация предыдущего итератора предоставляет программе возможность делать выборку из отдельных элементов с учетом их порядка. В следующем образце кода показано использование combinations_with_replacement с уже известными аргументами.
from itertools import combinations_with_replacement
for i in combinations_with_replacement('DOG', 2):
print(''.join(i))
# Output:
DD
DO
DG
OO
OG
GG
В результате работы программы, на экране отобразилось несколько групп элементов, не повторяющих порядок друг друга. При этом вполне могут использоваться одинаковые объекты, если их общее расположение не совпадает с предыдущими выборками.
permutations
Работа функции permutations модуля itertools в Python похожа на комбинацию со сменой порядка. Однако в ней не допускается размещение идентичных элементов в одной группе. Ниже приведен код, демонстрирующий поведение и результат выполнения этого метода в цикле for.
from itertools import permutations
for i in permutations('DOG', 2):
print(''.join(i))
# Output:
DO
DG
OD
OG
GD
GO
На выходе программа отображает несколько пар значений, так как в качестве второго аргумента функция получила 2. Важно заметить, что каждая новая выборка отличается от всех предыдущих только порядком, а общая последовательность может включать в себя группы, состоящие из одних и тех же значений, просто сменивших расположение.
product
Последний из комбинационных итераторов получает в качестве параметра массив данных, состоящий из нескольких групп значений. Функция product библиотеки itertools в Python 3 позволяет получить из введенной последовательности чисел или символов новую совокупность групп во всех возможных вариациях. Следующий пример показывает исполнение этого метода.
from itertools import product
data = list(product((0, 1), (2, 3)))
print(data)
# Output: [(0, 2), (0, 3), (1, 2), (1, 3)]
Таким образом, получается новая последовательность data, вмещающая в себя все возможные комбинации значений, полученных из начального списка.
#itertools #combinations
Ваше мнение
Final Results
38%
Слишком длинный пост, лучше писать такое статьей
62%
Нормально для поста
Мой коллега написал бота, который отправляет котиков и собачек. Советую ознакомиться с ним, поскольку даже в таком простейшем боте есть интересные вещи, например админская панель, позволяющая делать масс-рассылки. К тому же, код заботливо выложен на гитхаб.
Кстати, это только первая часть нашего с ним общего проекта. Но об этом уже немного позже.
Кстати, это только первая часть нашего с ним общего проекта. Но об этом уже немного позже.
Forwarded from Dank Code
Вероятнее всего, многие уже видели моего нового бота @DailyAnimalsBot, но всё же скидываю и сюда. Правда он умеет только отправлять котиков и собачек, но я также вкрутил туда несколько приколюх типа поддержка инлайн режима, смена языка и еще кое-что.
Весь код выложил в открытый доступ, можете посмотреть и поставить звездочку на гитхабе :)
P. S. Это не реклама, это просто мой небольшой проект.
Весь код выложил в открытый доступ, можете посмотреть и поставить звездочку на гитхабе :)
P. S. Это не реклама, это просто мой небольшой проект.
Новая рубрика
Недавно подписчица прислала мне код, и попросила опубликовать. И я тут подумал, что вообще говоря давно хотел создать новую рубрику с вашими работами.
Код создаёт на рабочем столе много папок, потом режет на квадратики заданного размера исходную картинку, превращает все в иконки, и цепляет на созданные папки на рабочем столе. Картинка может быть любой.
То есть, он создает изначально несобранную мозаику, а потом вы можете ее собрать.
Вот гитхаб с кодом:
Посмотреть код
Обратите внимание, код написан специально под windows
Да, теперь свои работы вы можете прислать мне, и я опубликую самое интересное.
Недавно подписчица прислала мне код, и попросила опубликовать. И я тут подумал, что вообще говоря давно хотел создать новую рубрику с вашими работами.
Код создаёт на рабочем столе много папок, потом режет на квадратики заданного размера исходную картинку, превращает все в иконки, и цепляет на созданные папки на рабочем столе. Картинка может быть любой.
То есть, он создает изначально несобранную мозаику, а потом вы можете ее собрать.
Вот гитхаб с кодом:
Посмотреть код
Обратите внимание, код написан специально под windows
Да, теперь свои работы вы можете прислать мне, и я опубликую самое интересное.
GitHub
GitHub - nikelborm/puzzle: Create awesome mosaic on your Windows desktop using folders!
Create awesome mosaic on your Windows desktop using folders! - nikelborm/puzzle
Начинаем возвращать актив
Давно не было постов, и актив упал. Я занимался не пойми чем, чаще конечно просто работал, или занимался физикой (я обычно использую питон для анализа данных численных расчетов взаимодействия лазера с плазмой). Отмечу, мне ужасно надоели сухие посты, которые я обычно писал до этого. Да и времени это отнимало прилично, необходимо было найти нужную тему, изучить ее. Поэтому я решил попробовать написать что-нибудь от себя.
На днях я тут обдумывал вот что. Программирование для меня по большей части это удобный инструмент. Чаще всего сейчас уже не хочется ковыряться в кишках кодинга, чтобы понять какие-либо скрытые механизмы, не столь важные для работы в данный момент. Да и по большей части уже многое сделано, и не требуется написания чего-либо с нуля. Например, сейчас уже не нужно придумывать и писать с нуля свой движок для игры, как лет 15-20 назад. Достаточно взять готовое решение и можно начинать творить. Программирование по сути стало доступно простым людям (читай не специалистам).
Что касается data science, тоже все идет в сторону того, что люди создают удобные либы, из которых например можно в несколько строчек написать код для распознавания лиц. Ну или как тут (советую потестить).
Недавно открыл для себя крутую штуку. Ее кстати можно использовать не только в jupyter (я вообще его не использую, чаще всего нужно подключаться к кластеру с данными и запускать скрипты сразу на нем же, прямо в консоли), достаточно передать в tqdm итерируемый объект.
#мысли
Давно не было постов, и актив упал. Я занимался не пойми чем, чаще конечно просто работал, или занимался физикой (я обычно использую питон для анализа данных численных расчетов взаимодействия лазера с плазмой). Отмечу, мне ужасно надоели сухие посты, которые я обычно писал до этого. Да и времени это отнимало прилично, необходимо было найти нужную тему, изучить ее. Поэтому я решил попробовать написать что-нибудь от себя.
На днях я тут обдумывал вот что. Программирование для меня по большей части это удобный инструмент. Чаще всего сейчас уже не хочется ковыряться в кишках кодинга, чтобы понять какие-либо скрытые механизмы, не столь важные для работы в данный момент. Да и по большей части уже многое сделано, и не требуется написания чего-либо с нуля. Например, сейчас уже не нужно придумывать и писать с нуля свой движок для игры, как лет 15-20 назад. Достаточно взять готовое решение и можно начинать творить. Программирование по сути стало доступно простым людям (читай не специалистам).
Что касается data science, тоже все идет в сторону того, что люди создают удобные либы, из которых например можно в несколько строчек написать код для распознавания лиц. Ну или как тут (советую потестить).
Недавно открыл для себя крутую штуку. Ее кстати можно использовать не только в jupyter (я вообще его не использую, чаще всего нужно подключаться к кластеру с данными и запускать скрипты сразу на нем же, прямо в консоли), достаточно передать в tqdm итерируемый объект.
#мысли
Создатель языка программирования Python уходит на пенсию
Спустя шесть с половиной лет, нидерландский программист и создатель языка программирования Python Гвидо ван Россум, покидает Dropbox и уходит в отставку. Компания объявила об этом 29 октября. Кстати, самые первые строки для Dropbox были написаны на Python.
Во время работы в Dropbox Гвидо сосредоточился на нескольких направлениях, в том числе помог отладить процесс тестирования и создать систему проверки типов для Python, получившую название mypy. Также он ответственен за создание более лёгкого в поддержке кода, который могут быстро разбирать новые разработчики. По его словам, когда он только пришёл в Dropbox, там разработчики использовали «умный» код (clever code), который понимали только они.
Для стартапа создание «умного» кода кажется правильным, но по мере роста и расширения команды разработки такое решение уже не подойдёт, пояснил ван Россум.
Гвидо ван Россум создал язык программирования Python в 1989 году, когда работал в Центре математики и информатики Амстердамского университета. В 2005 году он устроился на работу в Google, а в конце 2012 года перешёл в Dropbox.
#новости
Спустя шесть с половиной лет, нидерландский программист и создатель языка программирования Python Гвидо ван Россум, покидает Dropbox и уходит в отставку. Компания объявила об этом 29 октября. Кстати, самые первые строки для Dropbox были написаны на Python.
Во время работы в Dropbox Гвидо сосредоточился на нескольких направлениях, в том числе помог отладить процесс тестирования и создать систему проверки типов для Python, получившую название mypy. Также он ответственен за создание более лёгкого в поддержке кода, который могут быстро разбирать новые разработчики. По его словам, когда он только пришёл в Dropbox, там разработчики использовали «умный» код (clever code), который понимали только они.
Для стартапа создание «умного» кода кажется правильным, но по мере роста и расширения команды разработки такое решение уже не подойдёт, пояснил ван Россум.
Гвидо ван Россум создал язык программирования Python в 1989 году, когда работал в Центре математики и информатики Амстердамского университета. В 2005 году он устроился на работу в Google, а в конце 2012 года перешёл в Dropbox.
#новости
Work in progress
Thank you, Guido
After six and a half years, Guido van Rossum, the creator of Python, is leaving Dropbox and heading into retirement. From the beginning, we knew Guido would be a great addition to our company. In fact, his contributions to Dropbox date back to day one. Our…
#вакансия #программист #удаленка #вакансиянаудаленке
Мы предлагаем:
-Работу в молодом коллективе профессионалов. Команда – одна из наших самых больших гордостей
-Вилку по заработной плате – 20-40 тыс (руб)
-Сложные, но интересные задачи, безграничные возможности для развития
-Отсутствие бюрократии и настоящий дух стартапа
Чем предстоит заниматься:
-Писать алгоритмы для обработки поисковых запросов
-Добавлять в сайт интеграции с другими сервисами, например, авторизация и регистрация через Telegram или работа с API Яндекс.Вордстат
-Деплой на сервера Ubuntu
Навыки:
-Хорошее знание Python 3.5+
-Желателен опыт работы с фреймворками Django
-Опыт работы с Linux & Docker, PostgreSQL или MySQL, REST API, git или bitbucket
Контактная информация:
Контактное лицо: Диана Александровна Шорох
Телефон 8 (969) 0660033
E-mail: verizhnikova.natalya@bk.ru
Мы предлагаем:
-Работу в молодом коллективе профессионалов. Команда – одна из наших самых больших гордостей
-Вилку по заработной плате – 20-40 тыс (руб)
-Сложные, но интересные задачи, безграничные возможности для развития
-Отсутствие бюрократии и настоящий дух стартапа
Чем предстоит заниматься:
-Писать алгоритмы для обработки поисковых запросов
-Добавлять в сайт интеграции с другими сервисами, например, авторизация и регистрация через Telegram или работа с API Яндекс.Вордстат
-Деплой на сервера Ubuntu
Навыки:
-Хорошее знание Python 3.5+
-Желателен опыт работы с фреймворками Django
-Опыт работы с Linux & Docker, PostgreSQL или MySQL, REST API, git или bitbucket
Контактная информация:
Контактное лицо: Диана Александровна Шорох
Телефон 8 (969) 0660033
E-mail: verizhnikova.natalya@bk.ru
Matplotlib, pyplot и pylab: как они соотносятся?
Matplotlib по сути это целый пакет, тогда как matplotlib.pyplot это отдельный модуль в matplotlib.
Pylab это модуль, устанавливаемый отдельно от matplotlib.
Pyplot предоставляет state-machine интерфейс для базовой библиотеки объектно-ориентированных графиков. State machine неявно и автоматически создает фигуры и оси для достижения желаемого графика. Вот пример:
#matplotlib
Matplotlib по сути это целый пакет, тогда как matplotlib.pyplot это отдельный модуль в matplotlib.
Pylab это модуль, устанавливаемый отдельно от matplotlib.
Pyplot предоставляет state-machine интерфейс для базовой библиотеки объектно-ориентированных графиков. State machine неявно и автоматически создает фигуры и оси для достижения желаемого графика. Вот пример:
import matplotlib.pyplot as pltimport numpy as npx = np.linspace(0, 2, 100)plt.plot(x, x, label='linear')plt.plot(x, x**2, label='quadratic')plt.plot(x, x**3, label='cubic')plt.xlabel('x label')plt.ylabel('y label')plt.noscript("Simple Plot")plt.legend()plt.show()#matplotlib
Не забываем, что у нас есть две неплохие статьи по matplotlib.
Читать первую часть про matplotlib
Читать вторую часть про matplotlib
Рекомендую ознакомиться, потому что скоро мы планируем провести небольшой бесплатный интенсив по Data Science (нам понадобится matplotlib), где в конце будет анонс нашего нового крутого проекта.
Об этом всем я также сообщу немного позже на этой неделе.
#datascience #matplotlib
Читать первую часть про matplotlib
Читать вторую часть про matplotlib
Рекомендую ознакомиться, потому что скоро мы планируем провести небольшой бесплатный интенсив по Data Science (нам понадобится matplotlib), где в конце будет анонс нашего нового крутого проекта.
Об этом всем я также сообщу немного позже на этой неделе.
#datascience #matplotlib
Forwarded from Python Academy
Почему именно Python?
В современном обществе программировать на хотя бы базовом уровне должен уже каждому. Однако практически каждый новичок теряется при выборе языка программирования, когда сталкивается с таким разнообразием. В статье мы постарались объяснить наш выбор.
Читать 5 минут
В современном обществе программировать на хотя бы базовом уровне должен уже каждому. Однако практически каждый новичок теряется при выборе языка программирования, когда сталкивается с таким разнообразием. В статье мы постарались объяснить наш выбор.
Читать 5 минут
Teletype
Почему именно Python?
Простое лучше, чем сложное. © Дзен Python
Да чё это такое, а?
Возникал такой вопрос, когда видел термин Data Science?
Уверен, ты слышал, что это перспективное направление и там ну очень много денег, а конкурентов очень мало.
Дело не в сложности, а в том, что информации почти нет.
Поэтому самые быстрые успеют 4 дня кайфовать с бесплатной, но полезной информации.
Вступай, пока твоё место не заняли.
Возникал такой вопрос, когда видел термин Data Science?
Уверен, ты слышал, что это перспективное направление и там ну очень много денег, а конкурентов очень мало.
Дело не в сложности, а в том, что информации почти нет.
Поэтому самые быстрые успеют 4 дня кайфовать с бесплатной, но полезной информации.
Вступай, пока твоё место не заняли.
Без лишних слов, сразу к делу. Сейчас я покажу сразу несколько интересных примеров из математики, и их возможные реализации на Python.
Первый интересный факт: замечали ли вы, что сумма некоторого ряда нечетных чисел есть количество слагаемых суммы в квадрате?
Пример:
1 + 3 = 4 = 2^2
1 + 3 + 5 = 9 = 3^2
1 + 3 + 5 + 7 = 16 = 4^2
Попробуем реализовать это в виде двух функций, вычисления нечетных чисел и суммы:
Кстати, если вспомнить про интересную конструкцию yield from, то первую функцию можно записать вообще в одну строчку:
Работает!
Второй интересный факт: абсолютно любое число можно выразить в виде формулы, содержащей всего лишь из одной двойки и двух операций, взятия квадратного корня и логарифма по основанию 2.
Пример:
N = -log2(log2(sqrt(sqrt(sqrt(...(sqrt(2))))))
Общее число корней должно равняться числу N
3 = -log2(log2(sqrt(sqrt(sqrt(2)))))
Реализовывать это в виде нормальных функций как выше, наверное, я бы не стал. Нужна рекурсивная функция, вычисляющая квадратный корень большое количество раз, что довольно затратно (хоть современные процессоры и имеют инструкции для вычисления квадратных корней напрямую).
Подобную формулу предложил английский физик Поль Дирак. Дирак является одним из создателей современной квантовой механики.
P.S. не забудьте импортировать
Первый интересный факт: замечали ли вы, что сумма некоторого ряда нечетных чисел есть количество слагаемых суммы в квадрате?
Пример:
1 + 3 = 4 = 2^2
1 + 3 + 5 = 9 = 3^2
1 + 3 + 5 + 7 = 16 = 4^2
Попробуем реализовать это в виде двух функций, вычисления нечетных чисел и суммы:
def odds(n: int) -> int: for item in range(n): yield 2*item+1def squares(n: int) -> int: return sum(odds(n))Кстати, если вспомнить про интересную конструкцию yield from, то первую функцию можно записать вообще в одну строчку:
def odds(n: int) -> int: yield from [2*item+1 for item in range(n)]>>> squares(3)9Работает!
Второй интересный факт: абсолютно любое число можно выразить в виде формулы, содержащей всего лишь из одной двойки и двух операций, взятия квадратного корня и логарифма по основанию 2.
Пример:
N = -log2(log2(sqrt(sqrt(sqrt(...(sqrt(2))))))
Общее число корней должно равняться числу N
3 = -log2(log2(sqrt(sqrt(sqrt(2)))))
>>> -log2(log2(sqrt(sqrt(sqrt(2)))))2.9999999999999996Реализовывать это в виде нормальных функций как выше, наверное, я бы не стал. Нужна рекурсивная функция, вычисляющая квадратный корень большое количество раз, что довольно затратно (хоть современные процессоры и имеют инструкции для вычисления квадратных корней напрямую).
Подобную формулу предложил английский физик Поль Дирак. Дирак является одним из создателей современной квантовой механики.
P.S. не забудьте импортировать
log2 и sqrt из модуля mathПодчеркивание в Python
Знак подчеркивания _ или underscore занимает особое место в Python.
Подчеркивание имеет множество применений, как эстетических конвенций (необязательная договоренность разработчиков оформлять код с подчеркиваниями), так и функциональных, т. е. реально затрагивающих исполнение кода.
Ниже будет несколько примеров.
Змеиный регистр
Это конвенция именования переменных и функций в Python: название начинается с маленькой буквы, а слова разделяют знаком подчеркивания. Думаю все и так знают:
А так писать не принято:
Магические имена
Имена магических методов и магических переменных начинаются и заканчиваются в двух знаком подчеркивания (
Конфликт с ключевым словом
Если вам очень нужно назвать переменную, функцию или аргумент также как и какое-либо ключевое слово из Python, то принято в конце ставить знак подчеркивания, дабы избежать конфликта.
Бывает актуально, если вы пишите какой-то биндинг к сторонней библиотеке, где, к несчастью, некоторые понятия имеют такое же имя как и ключевые слова:
Но! Если вы пишите классовый метод, принято первый аргумент называть cls, а не class_.
Знак подчеркивания _ или underscore занимает особое место в Python.
Подчеркивание имеет множество применений, как эстетических конвенций (необязательная договоренность разработчиков оформлять код с подчеркиваниями), так и функциональных, т. е. реально затрагивающих исполнение кода.
Ниже будет несколько примеров.
Змеиный регистр
Это конвенция именования переменных и функций в Python: название начинается с маленькой буквы, а слова разделяют знаком подчеркивания. Думаю все и так знают:
foo_bar = 10def my_function_to_do_something_special(arg_1, arg_2): ...А так писать не принято:
carSpeed = 60Dont_Do_Like_This()Магические имена
Имена магических методов и магических переменных начинаются и заканчиваются в двух знаком подчеркивания (
__init__). Вот, например, так:class CrazyNumber: slots = ('n',)
def __init__(self, n): self.n = n def __add__(self, other): return self.n - other def __sub__(self, other): return self.n + other def __str__(self): return str(self.n)Конфликт с ключевым словом
Если вам очень нужно назвать переменную, функцию или аргумент также как и какое-либо ключевое слово из Python, то принято в конце ставить знак подчеркивания, дабы избежать конфликта.
Бывает актуально, если вы пишите какой-то биндинг к сторонней библиотеке, где, к несчастью, некоторые понятия имеют такое же имя как и ключевые слова:
Tkinter.Toplevel(master, class_='ClassName')Но! Если вы пишите классовый метод, принято первый аргумент называть cls, а не class_.