Функция
По умолчанию Python может обрабатывать очень большие числа, что иногда приводит к проблемам, особенно если в программу поступают несанкционированные или вредоносные данные. Функция
sys.set_int_max_str_digits() в Python используется для ограничения количества цифр, которые могут быть преобразованы в тип данных int из строки. Это важно для предотвращения атак типа *Denial of Service* (DoS), когда с помощью очень длинных строк, представляющих огромные числа, можно истощить ресурсы системы и вызвать замедление работы программы.По умолчанию Python может обрабатывать очень большие числа, что иногда приводит к проблемам, особенно если в программу поступают несанкционированные или вредоносные данные. Функция
sys.set_int_max_str_digits() позволяет ограничить количество цифр, которые можно передать для преобразования в int, тем самым защищая систему от чрезмерных вычислений и угроз безопасности.👍3
🖥 Вот 17 топовых GitHub-репозиториев для изучения Python с ссылками:
1. 30-Days-Of-Python — 30-дневный челлендж по основам Python.
2. Python Basics — азы Python для новичков, просто и с примерами.
3. Learn Python — справочник с кодом, пояснениями и практикой.
4. Python Guide — гайд по практикам, инструментам и сложным темам.
5. Learn Python 3 — руководство по Python 3 с практикой для начинающих.
6. Python Programming Exercises — 100+ задач по Python.
7. Coding Problems — алгоритмы и структуры данных для собесов.
8. Project-Based-Learning — Python через реальные проекты.
9. Projects — идеи проектов для прокачки навыков.
10. 100-Days-Of-ML-Code — ML на Python шаг за шагом.
11. TheAlgorithms/Python — алгоритмы и структуры данных на Python.
12. Amazing-Python-Scripts — полезные скрипты: от утилит до автоматизации.
13. Geekcomputers/Python — скрипты для сети, файлов и задач.
14. Materials — код и проекты от Real Python.
15. Awesome Python — топ фреймворков, библиотек и ресурсов.
16. 30-Seconds-of-Python — короткие сниппеты для быстрых решений.
17. Python Reference — скрипты, туториалы и лайфхаки.
1. 30-Days-Of-Python — 30-дневный челлендж по основам Python.
2. Python Basics — азы Python для новичков, просто и с примерами.
3. Learn Python — справочник с кодом, пояснениями и практикой.
4. Python Guide — гайд по практикам, инструментам и сложным темам.
5. Learn Python 3 — руководство по Python 3 с практикой для начинающих.
6. Python Programming Exercises — 100+ задач по Python.
7. Coding Problems — алгоритмы и структуры данных для собесов.
8. Project-Based-Learning — Python через реальные проекты.
9. Projects — идеи проектов для прокачки навыков.
10. 100-Days-Of-ML-Code — ML на Python шаг за шагом.
11. TheAlgorithms/Python — алгоритмы и структуры данных на Python.
12. Amazing-Python-Scripts — полезные скрипты: от утилит до автоматизации.
13. Geekcomputers/Python — скрипты для сети, файлов и задач.
14. Materials — код и проекты от Real Python.
15. Awesome Python — топ фреймворков, библиотек и ресурсов.
16. 30-Seconds-of-Python — короткие сниппеты для быстрых решений.
17. Python Reference — скрипты, туториалы и лайфхаки.
GitHub
GitHub - Asabeneh/30-Days-Of-Python: The 30 Days of Python programming challenge is a step-by-step guide to learn the Python programming…
The 30 Days of Python programming challenge is a step-by-step guide to learn the Python programming language in 30 days. This challenge may take more than 100 days. Follow your own pace. These vide...
🔥1
Немного базовых знаний, без которых никуда!
В Python все типы данных делятся на две большие группы: изменяемые (
Зачем вообще это разделение? Всё просто: неизменяемые объекты защищают свои данные — никакой другой объект не может их "тихо подправить". Это делает работу с ними безопаснее и предсказуемее.
> 🧠 Интересно: tuple считается неизменяемым, но внутри него могут быть изменяемые объекты. Аккуратнее с этим!
В Python все типы данных делятся на две большие группы: изменяемые (
list, set, dict) и неизменяемые (int, float, str, tuple, bool, frozenset, complex).Зачем вообще это разделение? Всё просто: неизменяемые объекты защищают свои данные — никакой другой объект не может их "тихо подправить". Это делает работу с ними безопаснее и предсказуемее.
> 🧠 Интересно: tuple считается неизменяемым, но внутри него могут быть изменяемые объекты. Аккуратнее с этим!
👍3
Когда ты вызываешь
1. Создаётся объект класса
2. Функция
3. Объект тут же уничтожается, потому что больше нигде не используется.
А теперь фокус: при следующем вызове
Кажется, будто объект остался, но это просто Python оптимизирует работу с памятью.
id(Ok()), происходит магия: 1. Создаётся объект класса
Ok. 2. Функция
id() возвращает его адрес в памяти. 3. Объект тут же уничтожается, потому что больше нигде не используется.
А теперь фокус: при следующем вызове
id(Ok()) — Python создаёт новый, но точно такой же объект, и... размещает его на том же месте в памяти. Поэтому id() снова возвращает тот же адрес.Кажется, будто объект остался, но это просто Python оптимизирует работу с памятью.
reversed(x) — это итератор, который позволяет пройтись по объекту в обратном порядке. В нашем случае — это 3, 2, 1. Но так как это итератор, пройтись по нему можно только один раз.
При следующем вызове он ничего не вернёт, и результат сравнения
При следующем вызове он ничего не вернёт, и результат сравнения
sorted([3, 2, 1]) == sorted([]) даст False.Про метод str.split(sep)
Тогда ряды пробелов рассматриваются как один разделитель и, к тому же, в результате не будет пустых строк в начале и в конце.
Если sep передан, то разделители не группируются, а значит на месте повторов образуется
Все знают, что он разделяет строку по sep, но у него есть свои особенности. И первое, это если sep не указан, то есть None.Тогда ряды пробелов рассматриваются как один разделитель и, к тому же, в результате не будет пустых строк в начале и в конце.
Если sep передан, то разделители не группируются, а значит на месте повторов образуется
''. Также, разделение пустой строки всегда вернёт [''].❤2
Упрощаем поиск багов с помощью assert в Python
Функция для вычисления площади квадрата со стороной 5 должна вернуть 25. А что если нет? Самый быстрый способ проверить — использовать
Если условие в первом аргументе False, будет вызвано
Чтобы отключить проверку, используйте флаг
Функция для вычисления площади квадрата со стороной 5 должна вернуть 25. А что если нет? Самый быстрый способ проверить — использовать
assert.Если условие в первом аргументе False, будет вызвано
AssertionError, а второй аргумент (если он есть) выведет сообщение.Чтобы отключить проверку, используйте флаг
-O при запуске: python3 -O foo.py. Подробнее в документации https://docs.python.org/3/reference/simple_stmts.html#grammar-token-python-grammar-assert_stmt👍2
Правильная сортировка символов по алфавиту
Буквы сортируются не по алфавиту, а по их позиции в таблице UTF-16. Значение символа можно получить с помощью
Символы в верхнем регистре имеют меньший код, чем в нижнем, поэтому они оказываются в начале списка при сортировке.
Буквы сортируются не по алфавиту, а по их позиции в таблице UTF-16. Значение символа можно получить с помощью
ord(x).Символы в верхнем регистре имеют меньший код, чем в нижнем, поэтому они оказываются в начале списка при сортировке.
👍4
Создаём интерфейс командной строки
Если создаёте консольное приложение, важно, чтобы пользователи могли легко с ним работать. Для этого на помощь приходит
Установка:
Модуль использует ООП-стиль, что упрощает интеграцию в ваш проект.
Кроме того, он позволяет работать с атрибутами, переданными в него. Подробнее об этом и многом другом в документации
Если создаёте консольное приложение, важно, чтобы пользователи могли легко с ним работать. Для этого на помощь приходит
fire.Установка:
pip install fireМодуль использует ООП-стиль, что упрощает интеграцию в ваш проект.
Кроме того, он позволяет работать с атрибутами, переданными в него. Подробнее об этом и многом другом в документации
Работа с декораторами в Python
Декораторы — это мощный инструмент для изменения поведения функций или методов. С помощью декораторов можно добавлять функциональность, не изменяя сам код функции.
Пример:
С помощью
Декораторы — это мощный инструмент для изменения поведения функций или методов. С помощью декораторов можно добавлять функциональность, не изменяя сам код функции.
Пример:
def my_decorator(func):
def wrapper():
print("До выполнения функции")
func()
print("После выполнения функции")
return wrapper
@my_decorator
def hello():
print("Привет!")
hello()
С помощью
@my_decorator мы оборачиваем функцию hello, добавляя код до и после её вызова.👍4👎1
🔧 Как "привинтить" функцию к объекту на лету с помощью `types.MethodType`
Иногда нужно добавить методу немного гибкости... прямо во время выполнения 😏
С помощью
Это особенно полезно, когда структура объекта формируется динамически, и заранее всё не пропишешь.
Иногда нужно добавить методу немного гибкости... прямо во время выполнения 😏
С помощью
types.MethodType можно прикрепить обычную функцию к экземпляру класса, превратив её в метод — с доступом к self и всему, что ему положено.Это особенно полезно, когда структура объекта формируется динамически, и заранее всё не пропишешь.
В этом примере функция external_function добавляется в экземпляр класса MyClass как метод. Это позволяет вызывать её как обычный метод класса, используя атрибуты экземпляра.
👍2❤1
Что такое замыкания?
Замыкание — это функция, которая запоминает значения из окружающей её области видимости, даже после того как эта область уже ушла из стека.
Пример:
В этом примере, даже после завершения работы функции
Замыкание — это функция, которая запоминает значения из окружающей её области видимости, даже после того как эта область уже ушла из стека.
Пример:
def outer():
x = 10
def inner():
print(x)
return inner
closure = outer()
closure() # Выведет 10
В этом примере, даже после завершения работы функции
outer, функция inner продолжает "помнить" переменную x.❤4👎1
🧵 `contextlib.nested` — управление несколькими контекстами в старом стиле
Раньше для работы с несколькими менеджерами контекста использовали
Сейчас считается устаревшим — используйте множественные
Если тебе нужно открыть несколько файлов (или других ресурсов), особенно в цикле,
📦 Удобно, когда количество контекстов заранее не известно. Все ресурсы закроются автоматически при выходе из блока
Раньше для работы с несколькими менеджерами контекста использовали
contextlib.nested. Он позволял аккуратно открывать несколько ресурсов в одной конструкции.Сейчас считается устаревшим — используйте множественные
with, генераторы или ExitStack.Если тебе нужно открыть несколько файлов (или других ресурсов), особенно в цикле,
contextlib.ExitStack — твоё всё:from contextlib import ExitStack
filenames = ["file1.txt", "file2.txt", "file3.txt"]
with ExitStack() as stack:
files = [stack.enter_context(open(fname)) for fname in filenames]
for f in files:
print(f.read())
📦 Удобно, когда количество контекстов заранее не известно. Все ресурсы закроются автоматически при выходе из блока
with.Что такое генераторы?
Генераторы позволяют вам создавать итераторы "на лету", не загружая всю коллекцию в память. Генератор возвращает элементы по одному, когда они запрашиваются.
Пример:
Генератор
ния на ноль будет перехвачена, и вместо аварийного завершения программы выведется сообщение об ошибке.
Генераторы позволяют вам создавать итераторы "на лету", не загружая всю коллекцию в память. Генератор возвращает элементы по одному, когда они запрашиваются.
Пример:
def countdown(n):
while n > 0:
yield n
n -= 1
gen = countdown(5)
for num in gen:
print(num)
Генератор
countdown создает последовательность чисел от 5 до 1, не загружая их все сразу в память.ния на ноль будет перехвачена, и вместо аварийного завершения программы выведется сообщение об ошибке.
👍3
В Python имя переменной может состоять из одного подчеркивания: _. Хотя обычно такие имена не достаточно описательны и не должны использоваться, есть по крайней мере три случая, когда _ имеет общепринятый смысл.
Во-первых, интерактивные интерпретаторы Python используют _ для хранения результата последнего выполненного выражения:
В-третьих, _ используется, когда вам нужно придумать имена для значений, которые вам не нужны:
Во-первых, интерактивные интерпретаторы Python используют _ для хранения результата последнего выполненного выражения:
>>> 2 + 2Во-вторых, руководство модуля gettext рекомендует псевдоним его функции gettext() для _(), чтобы минимизировать загромождение вашего кода.
4
>>> _
4
В-третьих, _ используется, когда вам нужно придумать имена для значений, которые вам не нужны:
for _ in range(10):
print('Hello!')
👍3
Как работает исключение `try-except`?
Блоки
Пример:
Здесь ошибка деления на ноль будет перехвачена, и вместо аварийного завершения программы выведется сообщение об ошибке.
Блоки
try и except используются для обработки ошибок. Код внутри блока try выполняется, и если возникает ошибка, она перехватывается блоком except.Пример:
try:
x = 1 / 0
except ZeroDivisionError:
print("Деление на ноль невозможно!")
Здесь ошибка деления на ноль будет перехвачена, и вместо аварийного завершения программы выведется сообщение об ошибке.
👍1
Составной вывод
Простой способ — сложение (конкатенация) строк. Хорошо с одной переменной в строке, а если их больше — читается с трудом.
Простой способ — сложение (конкатенация) строк. Хорошо с одной переменной в строке, а если их больше — читается с трудом.
print('Hello ' + name + ' — ' + str(age) + ' y.o.')
Функция format() позволяет формировать понятный вывод не только для пользователя, но и для программиста.print('Hello {} — {} y.o.'.format(name, age))
Python последовательно проставляет номера для скобок и передает им значения переменных, последовательно указанных в аргументе.NumPy: concatenate
Функция numpy.concatenate() используется для объединения массивов вдоль существующих осей. Это позволяет объединять несколько массивов NumPy в один массив. Мы передаем последовательность массивов, которые хотим объединить, в функцию concatenate() вместе с осью. Если ось не передана явно, она принимается за 0.
Функция numpy.concatenate() используется для объединения массивов вдоль существующих осей. Это позволяет объединять несколько массивов NumPy в один массив. Мы передаем последовательность массивов, которые хотим объединить, в функцию concatenate() вместе с осью. Если ось не передана явно, она принимается за 0.