Forwarded from Python Academy
Логирование
Логировние является неотъемлемой частью разработки. Логи показывают информацию о текущем состоянии программы. И чем лучше выстроено логирование, тем проще будет разобраться в нестандартных ситуациях.
Python поставляется для этих целей с гибким модулем
Созданный объект Logger предоставляет методы для записи сообщений разного уровня (
По умолчанию в
Для отправки логов в сконфигурированные места используются обработчики. Мы можем использовать уже существующие хэндлеры, либо создать свой класс обработчика, унаследовавшись от базового класса
#logging
Логировние является неотъемлемой частью разработки. Логи показывают информацию о текущем состоянии программы. И чем лучше выстроено логирование, тем проще будет разобраться в нестандартных ситуациях.
Python поставляется для этих целей с гибким модулем
logging
. Для создания объекта Logger
, вызываем функцию getLogger
, передавая в нее имя логера.Созданный объект Logger предоставляет методы для записи сообщений разного уровня (
DEBUG
, INFO
, WARNING
, ERROR
, CRITICAL
), что удобно для поиска нужной информации с применением фильтров.По умолчанию в
logging
задан уровень WARNING
, это означает, что сообщения уровня DEBUG
и INFO
будут игнорироваться при записи в лог. Изменить данное поведение можно с помощью метода setLevel
, передав минимальный уровень, который будет отлавливаться.Для отправки логов в сконфигурированные места используются обработчики. Мы можем использовать уже существующие хэндлеры, либо создать свой класс обработчика, унаследовавшись от базового класса
Handler
.#logging
Forwarded from Python Academy
Проверка истинности объекта класса
Для того, чтобы определить поведение при проверке на истинность объектов классов в python3 есть "магический" метод
Если данный метод определен в классе, то он будет вызываться при каждой проверке объекта на истинность а также с помощью функции
Если
#magic #__bool__
Для того, чтобы определить поведение при проверке на истинность объектов классов в python3 есть "магический" метод
__bool__()
, который был добавлен на замену устаревшему __nonzero__()
в python2.Если данный метод определен в классе, то он будет вызываться при каждой проверке объекта на истинность а также с помощью функции
bool()
. Метод должен возвращать False
или True
. Если
__bool__()
не определен, будет вызываться метод __len__()
, если он определен, и, соответственно, объект будет считаться истинным, если результат __len__()
не будет равен нулю. Если в классе не определены ни __len__()
, ни __bool__()
, все его экземпляры будут истинными.#magic #__bool__
Forwarded from Python Academy
Аргументы командой строки
При запуске программ через терминал можно указывать аргументы через пробел. В Python список этих аргументов хранится в переменной
Первым элементом всегда является имя запускаемого скрипта, вторым и далее — непосредственно сами аргументы.
#sys
При запуске программ через терминал можно указывать аргументы через пробел. В Python список этих аргументов хранится в переменной
argv
во встроенном модуле sys
.Первым элементом всегда является имя запускаемого скрипта, вторым и далее — непосредственно сами аргументы.
#sys
Forwarded from Python Academy
Режим разработки
Оказывается, еще в Python 3.7 появилась возможность запускать скрипты со специальным флагом
Например,
Также этот режим выводит дополнительные предупреждения в следующих случаях:
— Незакрытые файлы;
— Unawaited корутины;
— Неизвестная кодировка для
— Проблемы с выделением памяти.
В целом, классная штука и имеет смысл периодически запускать скрипты в таком режиме, чтобы не упустить никакие баги.
#python
Оказывается, еще в Python 3.7 появилась возможность запускать скрипты со специальным флагом
-X
для указания различных вариантов реализации.Например,
-X dev
запускает скрипт в режиме разработки с функциями отладки и runtime-проверки, которые не используются по умолчанию из-за своей медлительности.Также этот режим выводит дополнительные предупреждения в следующих случаях:
— Незакрытые файлы;
— Unawaited корутины;
— Неизвестная кодировка для
str.encode
;— Проблемы с выделением памяти.
В целом, классная штука и имеет смысл периодически запускать скрипты в таком режиме, чтобы не упустить никакие баги.
#python
Forwarded from Python Tasks & ML | Задачи по питону и машинному обучению
Что выведет код?
import pickle
s = pickle.dumps({"x": 1})
a = pickle.loads(s[1:])["x"]
print(a)
Forwarded from Python Tasks & ML | Задачи по питону и машинному обучению
Что выведет код?
class A:
def __call__(self):
return self
a = A()
print(a is a(), a() == a()())
Forwarded from Python Tasks & ML | Задачи по питону и машинному обучению
Что выведет код?
from functools import reduce
vals = (chr(x) for x in range(ord('a'), ord('d')))
print(reduce(lambda acc, x: x + acc[::-1] + x, vals, ''))
Forwarded from Python Tasks & ML | Задачи по питону и машинному обучению
Дан код
from collections import namedtuple
rec = namedtuple('rec', ['x', 'y', 'z'])
comp = rec(1, 2, [4, 5])
Forwarded from Python Tasks & ML | Задачи по питону и машинному обучению
Что выведет код?
import struct
s = struct.pack('fhb', 1, 1, 1)
print(len(s))
Forwarded from HABR FEED + OPENNET
[Перевод] TalkPython: лучшие пакеты Python по итогам 2021 года
https://habr.com/ru/post/598647/?utm_source=habrahabr&utm_medium=rss&utm_campaign=598647
Tags: Блог компании SkillFactory, Python, Программирование, Data Engineering, Читальный зал, skillfactory, python, подборка, пакеты, data engineer, data engineering, data science, гвидо ван россум, подкасты, подкасты для разработчиков
Author honyaki #habr
https://habr.com/ru/post/598647/?utm_source=habrahabr&utm_medium=rss&utm_campaign=598647
Tags: Блог компании SkillFactory, Python, Программирование, Data Engineering, Читальный зал, skillfactory, python, подборка, пакеты, data engineer, data engineering, data science, гвидо ван россум, подкасты, подкасты для разработчиков
Author honyaki #habr
Хабр
TalkPython: лучшие пакеты Python по итогам 2021 года
На КДПВ в гостях у TalkPython вы видите Гвидо ван Россума — создателя Python, Марка Шеннона, план ускорения Python в 5 раз за 4 года и, конечно, автора подкаста. А мы делимся подборкой пакетов Python,...
Forwarded from Николай Крупий
from colorama import Fore, Back, Style
print(Fore.RED + 'some red text')
print(Back.GREEN + 'and with a green background')
print(Back.BLUE + 'and with a green background')
print(Back.MAGENTA + 'and with a green background')
print(Style.DIM + 'and in dim text')
print(Style.RESET_ALL)
print('back to normal now')
#python #colors #colorama
#python python... PYTHON 🔛 🚀
https://t.me/Python_Community_ru #pycha
Telegram
Python Tasks & ML | Задачи по питону и машинному обучению
Algorithms, functions, classes, regular expressions, iterators, generators, OOP, exceptions, NumPy, pandas, scikit-learn
https://telega.in/c/python_tasks
Questions — @dina_ladnyuk
https://telega.in/c/python_tasks
Questions — @dina_ladnyuk
#py
filename and line number of Python script
stackoverflow.com›filename-and-line-number-of-python-script
Thanks to mcandre, the answer is:
filename and line number of Python script
stackoverflow.com›filename-and-line-number-of-python-script
Thanks to mcandre, the answer is:
#python3
from inspect import currentframe, getframeinfo
frameinfo = getframeinfo(currentframe())
print(frameinfo.filename, frameinfo.lineno)
Stack Overflow
filename and line number of Python script
How can I get the file name and line number in a Python script?
Exactly the file information we get from an exception traceback. In this case without raising an exception.
Exactly the file information we get from an exception traceback. In this case without raising an exception.