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
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
🟢 Что такое сборщик мусора и как он работает в Python?

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

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

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

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

Сборщик мусора имеет некоторые недостатки. Он может замедлять работу программы, так как сборка мусора занимает время процессора. Кроме того, сборка мусора может быть непредсказуемой, особенно если программа использует много памяти.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Python Hub - сборище Питонистов
Photo
Разбор 👨‍💻

К переменной result на каждом четном числе добавляется единица в первом if.
Во втором if к каждому нечетному числу добавляется двойка.

Но!
После второго if есть else, который срабатывает на четные числа и добавляет к результату еще единицу.

Вывод: на каждом четном и нечетном числе происходит увеличение на 2.
Какие числа перебирает цикл? —> 1 2 3 4 5
5 чисел * 2 = 10
Ответ: 10
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
📔 Как можно импортировать библиотеки в Python?

➡️ Использование ключевого слова import

Ключевое слово import - это основной способ импортирования в Python. Чтобы импортировать библиотеку, достаточно написать ключевое слово import, за которым следует имя библиотеки:

import имя_библиотеки


Например, следующий код импортирует библиотеку numpy:

import numpy


➡️ Использование ключевого слова from

Кроме того, можно использовать ключевое слово from для импортирования конкретных функций или классов из библиотеки. Это может быть полезно, если вы знаете, что используете только определенные функции из библиотеки. Чтобы использовать ключевое слово from, напишите его, за которым следует имя библиотеки, затем ключевое слово import, и, наконец, имя функции или класса, который вы хотите импортировать:

from имя_библиотеки import имя_функции


Например, следующий код импортирует только функцию array из библиотеки numpy:

from numpy import array


➡️ Использование псевдонимов

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

import имя_библиотеки as псевдоним


Например, следующий код импортирует библиотеку pandas и создает для нее псевдоним pd:

import pandas as pd
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Python Hub - сборище Питонистов
Photo
Разбор 👨‍💻

Функция callable() возвращает True , если указанный объект вызываемый, в противном случае она возвращает значение False.
int() —>
5() —>


Ответ: True False
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
📑 Задача на Python

Напишите функцию, которая удаляет пробелы из строки, а затем возвращает результирующую строку.

Примеры:

Input --> Output
"8 j 8 mBliB8g imjB8B8 jl B" --> "8j8mBliB8gimjB8B8jlB"
"8 8 Bi fk8h B 8 BB8B B B B888 c hl8 BhB fd" --> "88Bifk8hB8BB8BBBB888chl8BhBfd"
"8aaaaa dddd r " --> "8aaaaaddddr"

Ответ в комменты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Python Hub - сборище Питонистов
📑 Задача на Python Напишите функцию, которая удаляет пробелы из строки, а затем возвращает результирующую строку. Примеры: Input --> Output "8 j 8 mBliB8g imjB8B8 jl B" --> "8j8mBliB8gimjB8B8jlB" "8 8 Bi fk8h B 8 BB8B B B B888 c hl8 BhB fd" --> "…
Решения задачи можно было увидеть в комментариях, но продублирую их тут

Первый способ - решение через метод .replace, который позволяет заменить одни элементы в строке на другие.

def no_string_space(x):
return x.replace(" ", "")

a = input()
print(no_string_space(a))

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

def no_string_space(x):
c = ""
for i in x:
if i != ' ':
c += i
return c

a = input()
print(no_string_space(a))
👍3
💬 Напоминаю, что у нас есть бот-предложка, куда вы можете отправлять свои пожелания, замечания, советы, вопросы, мемы и многое другое.

https://t.me/Python_Hub_bot
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Что выдаст код выше?
Anonymous Quiz
4%
11
7%
10
21%
12
11%
13
14%
14
32%
Error
11%
Не знаю
👍2
Python Hub - сборище Питонистов
Photo
Разбор 👨‍💻

Генерируем последовательность от 0 до 10 ( не включая ) и заносим ее в переменную a.
После этого пробегаемся циклом по последовательности, i все время принимает значения, которые есть в последовательности, а потом увеличивается самостоятельно на единицу.
Когда мы доходим до 9, мы добавляем еще единицу —> 10 , дальше выходим из цикла.

Вычисление в скобках:
10 + 5 // 2 —> первое делаем целочисленное деление —> 10 + 2 —> 12
Ответ: 12
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🔥 Разница SQL и NoSQL баз данных


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

➡️ SQL базы данных

SQL (Structured Query Language) - это язык программирования, который используется для управления реляционными базами данных. SQL базы данных используют таблицы для хранения информации, а каждая таблица состоит из строк и столбцов. SQL базы данных поддерживают транзакции, что обеспечивает целостность данных. Они также легко масштабируются, что позволяет управлять большими объемами данных.

➡️ NoSQL базы данных

NoSQL (Not Only SQL) базы данных - это новый тип баз данных, который не использует традиционные таблицы для хранения информации. Вместо этого, они используют документы, ключи и значения, графы или колоночные семейства. NoSQL базы данных были созданы для управления большими объемами данные с высокой скоростью и производительностью. Они также легко масштабируются, что делает их отличным выбором для приложений, которые необходимо расширять.

➡️ Различия между SQL и NoSQL базами данных

Основное различие между SQL и NoSQL базами данных заключается в том, как они хранят и управляют данными. SQL базы данных используют таблицы, которые связаны друг с другом по ключам внешних таблиц. NoSQL базы данных используют документы, ключи и значения, графы или колоночные семейства, которые могут хранить неструктурированные данные. SQL базы данных имеют строгую схему, что означает, что каждый элемент данных должен соответствовать заданной схеме. NoSQL базы данных, с другой стороны, не имеют строгой схемы, что позволяет добавлять данные без необходимости изменения схемы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🟢 Метаклассы


➡️ Использование мета-классов

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

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

➡️ Примеры использования мета-классов

Рассмотрим несколько примеров использования мета-классов в Python.

1. Автоматическое добавление методов к классам

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

class MyMeta(type):
def __init__(cls, name, bases, attrs):
super().__init__(name, bases, attrs)
cls.new_method = lambda self: print("Hello, World!")

class MyClass(metaclass=MyMeta):
pass

obj = MyClass()
obj.new_method() # Output: "Hello, World!"


В этом примере мы создали мета-класс MyMeta, который добавляет метод new_method к классу, созданному с помощью этого мета-класса. Затем мы создали класс MyClass с помощью мета-класса MyMeta и создали экземпляр этого класса. Вызов метода new_method на экземпляре класса позволяет вывести на экран строку "Hello, World!".

2. Наследование методов от других классов

Мета-классы могут использоваться для наследования методов от других классов. Например, рассмотрим следующий код:

class MyMeta(type):
def __init__(cls, name, bases, attrs):
super().__init__(name, bases, attrs)
for base in bases:
if hasattr(base, 'my_method'):
setattr(cls, 'my_method', base.my_method)

class MyBaseClass:
def my_method(self):
print("Hello, World!")

class MyClass(MyBaseClass, metaclass=MyMeta):
pass

obj = MyClass()
obj.my_method() # Output: "Hello, World!"


В этом примере мы создали мета-класс MyMeta, который наследует метод my_method от базового класса MyBaseClass и добавляет его к новому классу, созданному с помощью этого мета-класса. Затем мы создали класс MyClass, который наследует от базового класса MyBaseClass и создали экземпляр этого класса. Вызов метода my_method на экземпляре класса позволяет вывести на экран строку "Hello, World!".

3. Изменение способа создания экземпляров классов

Мета-классы могут использоваться для изменения способа создания экземпляров классов. Например, рассмотрим следующий код:

class MyMeta(type):
def __call__(cls, *args, **kwargs):
print("Creating an instance of", cls.__name__)
instance = super().__call__(*args, **kwargs)
return instance

class MyClass(metaclass=MyMeta):
pass

obj = MyClass()


В этом примере мы создали мета-класс MyMeta, который изменяет способ создания экземпляров класса MyClass. Мы переопределили метод __call__, который вызывается при создании экземпляра класса, и добавили вывод строки "Creating an instance of" с именем класса. Затем мы создали класс MyClass с помощью мета-класса MyMeta и создали экземпляр этого класса. Вызов конструктора класса MyClass позволяет вывести на экран строку "Creating an instance of MyClass".
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3