Python Hub - сборище Питонистов
1.72K subscribers
657 photos
1 video
37 files
278 links
Уголок счастья для любого питониста.

Сотрудничество или заказы: @leshunist

https://shcoder.dev - студия разработки ShcoderDevelopment

https://t.me/pythonhub_chat - чат
Download Telegram
Что выдаст код выше?
Anonymous Quiz
41%
test
22%
None
32%
Error
5%
Не знаю
👍4
Python Hub - сборище Питонистов
Photo
Разбор 👨‍💻

Инструкция raise позволяет программисту принудительно вызвать одно исключение в любое время и в любом месте кода.

Мы самостоятельно вызываем ошибку.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Python Hub - сборище Питонистов
Что работает быстрее?
Разбор 👨‍💻

[] и {} — это часть синтаксиса. Списки и словари, созданные этим методом, инициализируются в байт-коде сразу, тогда как методы list() и dict() требуют поиска в таблице методов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🔥 Модуль collections в Python?

▶️ 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Что выдаст код выше?
Anonymous Quiz
15%
5
44%
23
21%
param1param2
15%
Error
6%
Не знаю
👍3
Python Hub - сборище Питонистов
Photo
Разбор 👨‍💻

Именованные кортежи ( namedtuple ) — это подкласс кортежей в Python. У них те же функции, что и у обычных, но их значения можно получать как с помощью имени (через точку, например, . name ), так и с помощью индекса (например [0] ).

Мы создали кортеж obj, элементы которого позже достали через точку (.), а не индекс.
В param1 был текст "2", в param2 - "3".
Получим 23.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🔥 Модуль collections в Python? [2]


Одной из главных функций 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)]
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Что выдаст код выше?
Anonymous Quiz
5%
1 2
21%
u l y
26%
u l
23%
u g u
12%
u g
7%
Error
7%
Не знаю
👍1🥰1
Python Hub - сборище Питонистов
Photo
Разбор 👨‍💻

Цикл for будет пробегать по среду слова "July". Изменение переменной а на "August" никак не повлияет на изначально заданное условие цикла.
Срез 1:3 - срез с 1 индекса по 3 (не включая). Получим буквы ul. (индексация же с 0)

Ответ: ul
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3👌1
Что выдаст код выше?
Anonymous Quiz
60%
0
11%
1
6%
-1
9%
5
9%
Error
6%
Не знаю
3👍1
Python Hub - сборище Питонистов
Photo
Разбор 👨‍💻

Целочисленное деление говорит нам о том, сколько переменная b может целиком поместиться в переменной a.
Ответ: 0 (раз)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🟢 Что такое GIL?


GIL, или Global Interpreter Lock, является механизмом в CPython, который ограничивает выполнение Python-кода одним потоком в один момент времени.
Это означает, что даже если у вас есть несколько потоков в Python-программе, только один поток может выполняться в любой момент времени.

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

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

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

GIL может оказывать негативное влияние на производительность Python-программ. Это связано с тем, что только один поток может выполнять Python-код в любой момент времени. Если у вас есть множество потоков, которые ожидают доступа к GIL, это может привести к значительному снижению производительности вашей программы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Что выдаст код выше?
Anonymous Quiz
36%
8
17%
9
28%
10
8%
12
6%
Error
6%
Не знаю
👍3