Pythoner
7.22K subscribers
862 photos
28 videos
4 files
657 links
Полезные материалы по Python, которые будут интересны опытному и начинающему разработчику.

Сотрудничество - @flattys
Цены - @serpent_media

Канал на бирже: https://telega.in/c/pythonercode
Download Telegram
Разбор

Вызываем функцию rec, передавая туда значение 3.
Внутри функции идет проверка, где мы в return'e возвращаем результат n + новый вызов функции rec(n-1) —> rec(2)

Операция повторяется и мы возвращаем результат n + rec(n-1) —> n + rec(1)

Заходим заново в функцию и возвращаем n + rec(0) —> теперь после вызова сработает return 1, т.к. if проверяет что n==0.

После чего, идем замыкать рекурсию в обратную сторону.

n + rec(0) —> 1 + 1 —> 2
n + rec(1) —> 2 + 2 —> 4
n + rec(2) —> 3 + 4 —> 7
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯13🔥5👍4👏2🤓1👀1
😁13🤣9👍2
➡️NamedTuple

NamedTuple
- это подтип кортежа, который позволяет объявлять собственные именованные типы, которые могут использоваться в качестве структуры данных. Он предоставляет возможность определить тип данных с помощью именованных полей. Каждое поле имеет свой собственный тип данных. Это может быть полезно в случаях, когда вам нужно создать объекты с определенными свойствами.

К примеру, если вы создаете объекты, представляющие собой записи в базе данных, вы можете использовать NamedTuple, чтобы создать тип данных, содержащий поля, соответствующие полям в таблице.

from collections import namedtuple

Person = namedtuple('Person', ['name', 'age'])

person1 = Person(name='John', age=30)
person2 = Person(name='Jane', age=25)

print(person1.name) # John
print(person2.age) # 25

Или например:

from collections import namedtuple

Person = namedtuple('Person', 'name age')

person1 = Person('John', 30)
person2 = Person(name='Jane', age=25)

print(person1.name) # John
print(person2.age) # 25


🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73🔥3🤔1
➡️Одной из главных функций Collections Counter является подсчет элементов в коллекции. Для этого необходимо импортировать модуль collections и создать объект Counter с передачей коллекции в качестве аргумента. В результате выполнения функции мы получим словарь, где ключами будут элементы коллекции, а значениями — их количество. Рассмотрим пример:

from collections import Counter

lst = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
counted_elements = Counter(lst)
print(counted_elements)


В результате выполнения этого кода мы получим следующий словарь:

{1: 1, 2: 2, 3: 3, 4: 4}


➡️Переопределение элементов коллекции

С помощью Collections Counter мы также можем переопределить элементы коллекции. Для этого необходимо создать объект Counter для исходной коллекции и передать новые значения с помощью метода update(). Рассмотрим пример:

from collections import Counter

lst = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
counted_elements = Counter(lst)
print(counted_elements)

counted_elements.update({2: 5, 5: 1})
print(counted_elements)


В результате выполнения этого кода мы получим следующий словарь:

{1: 1, 2: 2, 3: 3, 4: 4}
{1: 1, 2: 7, 3: 3, 4: 4, 5: 1}


➡️Нахождение n наиболее часто встречающихся элементов

Collections Counter также позволяет находить n наиболее часто встречающихся элементов в коллекции. Для этого необходимо использовать метод most_common(n), где n — количество наиболее часто встречающихся элементов, которые нужно найти. Рассмотрим пример:

from collections import Counter

lst = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
counted_elements = Counter(lst)

most_common_elements = counted_elements.most_common(2)
print(most_common_elements)


В результате выполнения этого кода мы получим следующий список:

[(4, 4), (3, 3)]


🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍4🔥2
🔎ORM - это аббревиатура от Object-Relational Mapping, что в переводе означает "отображение объектов на реляционные структуры данных". ORM - это технология, которая позволяет программистам работать с данными в базах данных, используя объектно-ориентированный подход.

➡️Как работает ORM

ORM позволяет программистам работать с базами данных, не взаимодействуя с ними напрямую. Вместо этого, ORM предоставляет программистам API, который позволяет им работать с данными, как если бы они были объектами в коде. ORM берет на себя задачу преобразования объектов в данные, которые могут быть сохранены в базе данных, и обратно.

➡️Преимущества ORM

Одним из главных преимуществ ORM является упрощение процесса разработки. ORM позволяет программистам сосредоточиться на разработке бизнес-логики, а не на взаимодействии с базами данных. Кроме того, ORM обеспечивает безопасность данных, так как предотвращает возможность SQL-инъекций. В целом, ORM делает процесс разработки более быстрым, эффективным и безопасным.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥4👍2
➡️Существует множество популярных библиотек ORM, доступных в Python, каждая со своими преимуществами и недостатками. Некоторые из наиболее популярных библиотек включают SQLAlchemy, Django ORM и Peewee.

➡️SQLAlchemy является популярным выбором, потому что он настраиваемый и предоставляет широкий спектр функций, включая поддержку нескольких баз данных. Django ORM - это еще один популярный выбор, особенно для разработчиков, использующих веб-фреймворк Django. Peewee - это легкий ORM, который легко использовать и предоставляет простой API для взаимодействия с базами данных.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83🔥2
🔎GIL, или Global Interpreter Lock, является механизмом в CPython, который ограничивает выполнение Python-кода одним потоком в один момент времени. Это означает, что даже если у вас есть несколько потоков в Python-программе, только один поток может выполняться в любой момент времени.

➡️Как работает GIL?

GIL - это блокировка, которая накладывается на интерпретатор Python, чтобы предотвратить одновременное выполнение Python-кода несколькими потоками. Все объекты Python имеют ссылки на них, которые хранятся в глобальном пространстве имен. GIL гарантирует, что только один поток может получить доступ к этому глобальному пространству имен в любой момент времени. Когда поток хочет выполнить Python-код, он должен получить эту блокировку. Если блокировка уже занята другим потоком, поток будет ожидать, пока блокировка не освободится. Когда блокировка освобождается, следующий поток может получить ее и продолжить выполнение Python-кода.

➡️Влияние GIL на производительность

GIL может оказывать негативное влияние на производительность Python-программ. Это связано с тем, что только один поток может выполнять Python-код в любой момент времени. Если у вас есть множество потоков, которые ожидают доступа к GIL, это может привести к значительному снижению производительности вашей программы.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍3🔥1
🔎Хакатоны - это мероприятия, на которых программисты собираются вместе, чтобы работать в коллективе над проектами. Они обычно проходят на выходных и включают в себя много работы за короткое время.

➡️Цель и формат хакатонов

Цель хакатонов - это создание рабочих прототипов программных продуктов в короткие сроки. Это помогает разработчикам проверить, насколько их идеи реализуемы, и получить обратную связь от других участников и экспертов. Формат хакатонов очень разнообразен - от небольших встреч в офисах компаний до крупных соревнований, на которых участвуют сотни программистов. В любом случае, участники работают в командах, обычно состоящих из 3-5 человек, и имеют на выбор несколько тематик для работы.

➡️Преимущества участия в хакатонах

Хакатоны предоставляют программистам множество возможностей для роста и развития. Во-первых, они могут помочь научиться работать в команде и улучшить свои навыки коммуникации и организации. Во-вторых, участники могут узнать много нового о технологиях и инструментах, которые используют другие участники. Наконец, вас могут заметить компании, либо за победу будет объявлен денежныц приз. Кроме того, хакатоны могут просто быть замечательной возможностью для поиска новых контактов и друзей в отрасли.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍6🔥1🤝1
🔎В программировании, сборщик мусора - это механизм, который автоматически удаляет объекты, которые больше не используются программой, освобождая память. Сборщик мусора очень полезен для устранения утечек памяти и других проблем с управлением памятью.

➡️В Python сборка мусора - это часть виртуальной машины Python. Сборка мусора в Python работает следующим образом:

1. Когда объект создается, он помещается в "кучу" (heap).
2. Когда объект больше не используется, сборщик мусора помечает его как "мусор".
3. Сборщик мусора периодически запускается и проверяет все объекты в куче.
4. Если объект помечен как "мусор", сборщик мусора удаляет его из памяти.

➡️Сборка мусора в Python происходит автоматически и не требует дополнительного управления со стороны разработчика. Однако, если вы работаете с большими объемами данных, может быть полезно вручную вызывать сборщик мусора с помощью метода gc.collect().

➡️Сборщик мусора имеет некоторые недостатки. Он может замедлять работу программы, так как сборка мусора занимает время процессора. Кроме того, сборка мусора может быть непредсказуемой, особенно если программа использует много памяти.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍123🔥1
🤣34👍83😁1
➡️Бинарное дерево - это иерархическая структура данных, в которой каждый узел имеет не более двух потомков: левый и правый. В этом блоге мы рассмотрим, как создать бинарное дерево в Python.

В бинарном дереве узел является основным элементом. Каждый узел имеет данные и ссылки на левого и правого потомков. В Python мы можем создать узел, определив класс Node с инициализатором, который устанавливает данные и оба потомка.

💡Пример кода:

class Node:
def __init__(self, data):
self.left = None
self.right = None
self.data = data


➡️Создание бинарного дерева

После того как узел определен, мы можем создать бинарное дерево. Начальный узел известен как корень. Мы создаем бинарное дерево, добавляя новые узлы в качестве левого или правого потомка корня или любого другого узла.

💡Пример кода:

root = Node(1)

root.left = Node(2)
root.right = Node(3)

root.left.left = Node(4)
root.left.right = Node(5)


➡️Обход бинарного дерева

Обход - это процесс посещения каждого узла в дереве. Существуют различные методы обхода, включая прямой (Preorder), симметричный (Inorder) и обратный (Postorder) обход. В Python мы можем реализовать эти методы с помощью рекурсии или стеков.

Пример кода для прямого обхода:

def preorder_traversal(root):
if root:
print(root.data)
preorder_traversal(root.left)
preorder_traversal(root.right)


🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍135🔥1
➡️Целые числа (int)

Целые числа в Python занимают разное количество байт в зависимости от их значения. В Python 3 все целые числа являются объектами класса int. Этот класс использует переменную длину, что означает, что количество байт, необходимых для хранения целого числа, зависит от его значения и может быть любым.

➡️Вещественные числа (float)

Вещественные числа в Python занимают 8 байт. Это соответствует 64 битам двоичного числа с плавающей точкой стандарта IEEE 754.

➡️Строки (str)

Строки в Python занимают количество байт, равное количеству символов в строке, умноженному на размер каждого символа. В Python 3 по умолчанию используется кодировка Unicode, которая занимает 2 байта на символ, если символ может быть представлен в 16-битной форме, и 4 байта в противном случае.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74🔥1
🤣19👍7😁43👀2🔥1
➡️Введение

CI и CD - это два понятия, которые становятся все более популярными в сфере разработки программного обеспечения. Их основная цель - упростить процесс разработки, тестирования и доставки программного обеспечения. В этой статье мы рассмотрим, что такое CI и CD и как они работают.

➡️Что такое CI?

CI - это сокращение от "Continuous Integration", что в переводе означает "непрерывная интеграция". Это процесс автоматической сборки и тестирования кода в репозитории каждый раз, когда происходит изменение в коде. Это позволяет быстро выявлять ошибки и устранять их, что делает процесс разработки более эффективным и быстрым.

➡️Что такое CD?

CD - это сокращение от "Continuous Delivery" или "Continuous Deployment", что в переводе означает "непрерывная доставка" или "непрерывное развертывание". Это процесс автоматической доставки программного обеспечения в производственную среду после успешного прохождения всех тестов в процессе CI. Он позволяет быстро и надежно доставлять программное обеспечение в производственную среду, что сокращает время между разработкой и выпуском.

➡️Как работают CI и CD?

CI и CD работают вместе, чтобы ускорить и упростить процесс разработки программного обеспечения. Когда разработчик отправляет изменения в репозиторий, CI-система автоматически собирает и тестирует код. Если тесты проходят успешно, CD-система автоматически доставляет программное обеспечение в производственную среду. Это позволяет быстро и эффективно доставлять высококачественное программное обеспечение в производственную среду.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63🔥1
➡️Django - это популярный фреймворк для веб-разработки, написанный на языке Python. Он облегчает процесс создания веб-приложений, предоставляя разработчикам множество инструментов и функций. Но как и у любого другого инструмента, у Django есть свои плюсы и минусы.

➡️Преимущества Django

1. Быстрая разработка - Django предоставляет множество готовых компонентов, что позволяет быстро создавать веб-приложения. Например, Django имеет встроенную систему аутентификации, которую можно использовать для регистрации и авторизации пользователей без необходимости разработки этой функциональности с нуля.
2. Безопасность - Django предоставляет множество инструментов для обеспечения безопасности веб-приложений. Это включает в себя защиту от CSRF-атак, SQL-инъекций и других видов атак на веб-приложения.
3. Масштабируемость - Django позволяет легко масштабировать веб-приложения. Это может быть особенно полезно для больших проектов, которые нуждаются в масштабировании для обработки большого количества пользователей.

➡️Недостатки Django

1. Сложность - хотя Django предоставляет множество готовых компонентов, изучение фреймворка может быть сложным, особенно для новичков в веб-разработке. Django имеет свой собственный способ работы с запросами и базами данных, который может отличаться от других фреймворков.
2. Ограничения при создании пользовательского интерфейса - Django не является лучшим инструментом для создания сложных пользовательских интерфейсов. Он предоставляет базовые инструменты для создания интерфейса, но, если вам нужно что-то более сложное, вам может прийтись использовать другие инструменты.
3. Сложность в обработке асинхронных запросов - Django не обрабатывает асинхронные запросы так же легко, как другие фреймворки. Если вы работаете с приложением, которое требует обработки большого количества асинхронных запросов, вам может прийтись использовать другие инструменты.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍6🔥1
➡️Декларативное программирование

Декларативное программирование - это подход к написанию кода, в котором программа описывает желаемый результат, а не способ его достижения. В декларативном программировании вы описываете, что должно произойти, а не как это должно произойти. Это означает, что вы не указываете последовательность шагов, которые должны быть выполнены, а вместо этого указываете, какой результат вы хотите получить.

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

➡️Императивное программирование

Императивное программирование - это подход к написанию кода, в котором программа описывает последовательность шагов, необходимых для достижения желаемого результата. В императивном программировании вы описываете, как нужно выполнить задачу, а не только то, что должно получиться в результате.

Одним из преимуществ императивного программирования является то, что вы можете более точно контролировать процесс выполнения программы. Это означает, что вы можете управлять памятью, производительностью и другими аспектами выполнения программы.

Разница между декларативным и императивным программированием

Основное различие между декларативным и императивным программированием заключается в том, как программа описывает желаемый результат. В декларативном программировании программа описывает желаемый результат, а в императивном - последовательность шагов, необходимых для достижения желаемого результата.

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

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔64👍2🔥1🥰1
➡️Декларативное программирование в Python

Декларативное программирование - это стиль программирования, который сосредотачивается на "что", а не на "как" программы. Он включает в себя указание желаемого вывода программы без указания того, как его достичь. В Python одним из примеров декларативного программирования является использование генераторов списков.

numbers = [1, 2, 3, 4, 5]
squares = [num ** 2 for num in numbers]


В этом примере мы объявляем, что мы хотим создать список квадратов от 1 до 5. Мы не указываем, как достичь этого вывода. Генераторы списков в Python заботятся об этом за нас.

➡️Императивное программирование в Python

Императивное программирование - это стиль программирования, который сосредотачивается на "как" программы. Он включает в себя указание последовательных инструкций для достижения желаемого вывода. В Python одним из примеров императивного программирования является использование цикла for.

numbers = [1, 2, 3, 4, 5]
squares = []
for num in numbers:
squares.append(num ** 2)


В этом примере мы указываем, как достичь желаемого вывода, создав список квадратов от 1 до 5. Мы используем цикл for для итерации по каждому числу и добавляем его квадрат в новый список.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍124🔥2
🤣18👍7😁4😢32
👍6
Что выдаст код выше
Anonymous Quiz
18%
2
2%
a
30%
b
12%
self
37%
Error
🤔11😢3🤨3👍1
Разбор

У нас есть два класса, причем один наследуется от другого. Здесь идет простое создание объекта, а потом вызов метода у класса-ребенка. В методе классе-ребенка вызывается метод класса-родителя, а там выводится 'b'.
Переданные параметры никак не влияют на ответ, важно только их количество.
Важно помнить, что self принимает в себя сам объект. Если вызов идет через объект, то self передается автоматически.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯117🔥3🤓2👍1👀1