Forwarded from Python академия
Как вывести все методы класса в Python?
Для того, чтобы вывести все методы класса, Вы можете воспользоваться методами
Посмотреть пример в онлайн редакторе.
Подписывайтесь на канал 👉@pythonofff
Для того, чтобы вывести все методы класса, Вы можете воспользоваться методами
dir()
, callable()
, getattr()
Посмотреть пример в онлайн редакторе.
Подписывайтесь на канал 👉@pythonofff
👍4
Расскажем, чем занимается дизайнер интерфейсов, и что делать, чтобы получить новую профессию.
Для кого:
— дизайнеров, которые планируют углубиться в сферу UX/UI-дизайна;
— специалистов из смежных профессий (разработчики, продакт-менеджеры), которые хотят погрузиться в дизайн интерфейсов;
— для всех, кто хочет поменять профессию и с нуля освоить UX/UI-дизайн;
22 марта в 19.00 по мск
Зарегистрироваться
Для кого:
— дизайнеров, которые планируют углубиться в сферу UX/UI-дизайна;
— специалистов из смежных профессий (разработчики, продакт-менеджеры), которые хотят погрузиться в дизайн интерфейсов;
— для всех, кто хочет поменять профессию и с нуля освоить UX/UI-дизайн;
22 марта в 19.00 по мск
Зарегистрироваться
👍1
In Python 3
You can argue that you don't really need indexing keys since their order is random, but it's not completely true. First of all,
keys
, values
and items
methods of dicts return view objects. They returned lists back in Python 2. The main difference is views don't store all items in memory, but yield them as long as they are requested. It works just fine as long as you are trying to iterate over keys (which you usually are), but you can't access elements by index anymore.TypeError: 'dict_keys' object does not support indexing
You can argue that you don't really need indexing keys since their order is random, but it's not completely true. First of all,
d.keys()[0]
can be a proper way to get any key (use next(d.keys())
in Python 3). Second, since Python 3.6 dicts are insertion ordered in CPython and that will be a language feature since Python 3.7.👍2
Шаблоны Django: реализация настраиваемых тегов и фильтров.
Шаблоны Django помогают вам управлять HTML вашего веб-приложения. Шаблоны используют мини-язык с переменными, тегами и фильтрами. Вы можете условно включать блоки, создавать циклы и изменять переменные перед их отображением. Django поставляется с большим количеством встроенных тегов и фильтров, но что если их недостаточно? В таком случае, напишите свои собственные! В этом уроке рассказывается о том, как написать собственные пользовательские теги и фильтры для шаблона Django.
https://realpython.com/django-template-custom-tags-filters/
Шаблоны Django помогают вам управлять HTML вашего веб-приложения. Шаблоны используют мини-язык с переменными, тегами и фильтрами. Вы можете условно включать блоки, создавать циклы и изменять переменные перед их отображением. Django поставляется с большим количеством встроенных тегов и фильтров, но что если их недостаточно? В таком случае, напишите свои собственные! В этом уроке рассказывается о том, как написать собственные пользовательские теги и фильтры для шаблона Django.
https://realpython.com/django-template-custom-tags-filters/
👍2
👋 Мы — команда айтишников. В текущих условиях компания не может работать как работала, и мы решили переехать всей командой.
💬 Создали канал для таких же, как мы, — тех, кто хочет уехать. Собираем всё самое полезное про релокацию. Рассказываем, с чем столкнулись сами, ищем лайфхаки и способы похачить систему (например, нашли несколько способов, как жить за границей на рубли).
👨💻 А вообще, мы HR-IT-чувачки (то есть без лишней скромности профи в сфере трудоустройства) и сейчас готовим новый проект: будем помогать айтишникам организовать переезд и устроиться на работу в валюте. И ещё сверху грант будем давать💰
👉 Что для этого нужно? Пока что — присоединиться к каналу RelocationDev и следить за новостями😉 Скоро обо всём расскажем — в мельчайших подробностях.
💬 Создали канал для таких же, как мы, — тех, кто хочет уехать. Собираем всё самое полезное про релокацию. Рассказываем, с чем столкнулись сами, ищем лайфхаки и способы похачить систему (например, нашли несколько способов, как жить за границей на рубли).
👨💻 А вообще, мы HR-IT-чувачки (то есть без лишней скромности профи в сфере трудоустройства) и сейчас готовим новый проект: будем помогать айтишникам организовать переезд и устроиться на работу в валюте. И ещё сверху грант будем давать💰
👉 Что для этого нужно? Пока что — присоединиться к каналу RelocationDev и следить за новостями😉 Скоро обо всём расскажем — в мельчайших подробностях.
👎21👍5
Операторы 'is' и '==' в Python
В Python есть два похожих оператора, предназначенных для сравнения объектов. Эти оператор is и ==. Их часто путают, потому они одинаково сравнивают типы данных intи string:
Подробнее
В Python есть два похожих оператора, предназначенных для сравнения объектов. Эти оператор is и ==. Их часто путают, потому они одинаково сравнивают типы данных intи string:
Подробнее
👍18
Уроки по Django REST Framework
#1. Django REST Framework - что это такое
#2. Установка Django Rest Framework
#3. Базовый класс APIView для представлений
#4. Введение в сериализацию. Класс Serializer
#5. Методы save(), create() и update() класса Serializer
#6. Класс ModelSerializer и представление ListCreateAPIView
#7. Представления UpdateAPIView и RetrieveUpdateDestroyAPIView
#8. Viewsets и ModelViewSet
#9. Роутеры: SimpleRouter и DefaultRouter
#10. Ограничения доступа (permissions)
#11. Авторизация и аутентификация. Session-based authentication
#12. Аутентификация по токенам. Пакет Djoser
#13. Идея авторизации по JWT-токенам
#14. Делаем авторизацию по JWT-токенам
#15. Добавляем пагинацию (pagination)
#1. Django REST Framework - что это такое
#2. Установка Django Rest Framework
#3. Базовый класс APIView для представлений
#4. Введение в сериализацию. Класс Serializer
#5. Методы save(), create() и update() класса Serializer
#6. Класс ModelSerializer и представление ListCreateAPIView
#7. Представления UpdateAPIView и RetrieveUpdateDestroyAPIView
#8. Viewsets и ModelViewSet
#9. Роутеры: SimpleRouter и DefaultRouter
#10. Ограничения доступа (permissions)
#11. Авторизация и аутентификация. Session-based authentication
#12. Аутентификация по токенам. Пакет Djoser
#13. Идея авторизации по JWT-токенам
#14. Делаем авторизацию по JWT-токенам
#15. Добавляем пагинацию (pagination)
👍16
Блочная сортировка в Python
В этом руководстве мы рассмотрим теорию и практическую реализацию блочной сортировки в Python.
Блочная сортировка – это алгоритм, который распределяет элементы сортируемого списка по определенному количеству блоков (сегментов). После сортировки содержимое блоков добавляется, образуя отсортированную коллекцию.
Подробнее
В этом руководстве мы рассмотрим теорию и практическую реализацию блочной сортировки в Python.
Блочная сортировка – это алгоритм, который распределяет элементы сортируемого списка по определенному количеству блоков (сегментов). После сортировки содержимое блоков добавляется, образуя отсортированную коллекцию.
Подробнее
👍11🔥3
Forwarded from Python академия
Модуль sys
Данный модуль предоставляет доступ к широким возможностям интерпретатора python. К примеру, с его помощью можно завершить работу скрипта, узнать вес объекта, получить пути к библиотекам, узнать операционную систему, узнать кодировку файлов по умолчанию и многое другое.
Если вы планируете участвовать в олимпиадах, то обязаны так же обрабатывать потоковый ввод. Для своих программ можно обойтись и без него.
Я перечислил самые полезные функции, остальное всегда можно прочитать в документации (да, её стоит читать) или загуглить.
Подписывайтесь на канал 👉@pythonofff
Данный модуль предоставляет доступ к широким возможностям интерпретатора python. К примеру, с его помощью можно завершить работу скрипта, узнать вес объекта, получить пути к библиотекам, узнать операционную систему, узнать кодировку файлов по умолчанию и многое другое.
Если вы планируете участвовать в олимпиадах, то обязаны так же обрабатывать потоковый ввод. Для своих программ можно обойтись и без него.
Я перечислил самые полезные функции, остальное всегда можно прочитать в документации (да, её стоит читать) или загуглить.
Подписывайтесь на канал 👉@pythonofff
👍6
If you want to catch both
IndexError
and KeyError
, you may and should use LookupError
, their common ancestor. It proved to be useful while accessing complex nested data:try:
db_host = config['databases'][0]['hosts'][0]
except LookupError:
db_host = 'localhost'
👍11
Python 3 allows you to make some function arguments keyword-only, meaning they must be passed as
It may be useful to prevent function calls like this:
To achieve this result you should place the keyword-only arguments after varargs argument (aka
If you don't need
(arg=value)
rather than just (value)
.It may be useful to prevent function calls like this:
grep(text, pattern, True, False, True)
, where True, False, True
actually means ignore case, don't invert match, pattern is Perl regexp. It would be nice to force the only reasonable form of this call:grep(text, pattern,
ignore_case=True,
perl_regexp=True)
To achieve this result you should place the keyword-only arguments after varargs argument (aka
*args
):def grep(
text, pattern, *args,
ignore_case=False,
invert_match=False,
perl_regexp=False,
):
pass
If you don't need
*args
(like in the example), just replace it with a bare asterisk:def grep(
text, pattern, *,
ignore_case=False,
invert_match=False,
perl_regexp=False,
):
pass
👍7
Полезный совет: учите Linux
Мы публикуем новости и статьи из мира Linux
Дерзайте: https://t.me/linux_sup
Мы публикуем новости и статьи из мира Linux
Дерзайте: https://t.me/linux_sup
Чтение и запись файлов MS Word с помощью модуля Python-Docx
В этой статье вы узнаете, как в Python считывать и записывать файлы MS Word.
Существует несколько библиотек, которые можно использовать для чтения и записи в Python файлов MS Word. Мы будем использовать модуль python-docx .
Подробнее
В этой статье вы узнаете, как в Python считывать и записывать файлы MS Word.
Существует несколько библиотек, которые можно использовать для чтения и записи в Python файлов MS Word. Мы будем использовать модуль python-docx .
Подробнее
👍8🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
С чего начать путь в IT? Так ли хорош Python в качестве первого языка для изучения программирования? И какие карьерные перспективы ждут питониста?
Об этом и многом другом онлайн-встреча с Валентином Хомутенко, старшим наставником программы «Python-разработчик» на Хекслете, бэкенд-инженером в Avito.
Расскажем о том, кто такие Python-разработчики и какие задачи они решают. Поговорим о мотивации в обучении и скилах, которые пригодятся на любом этапе карьеры. Затронем тему трудоустройства — что нужно знать и уметь, чтобы позвали на собеседование и предложили оффер.
Приходите, чтобы определиться с выбором языка, лучше понять индустрию и особенности профессии изнутри.
🎉Среди участников, присутствующих на встрече, разыграем грант в размере 50% стоимости нашей полной программы по обучению Python-разработке.
Встречаемся онлайн, 31 марта, в 20:00 по Москве. Участие бесплатное. Регистрируйтесь по ссылке!
Об этом и многом другом онлайн-встреча с Валентином Хомутенко, старшим наставником программы «Python-разработчик» на Хекслете, бэкенд-инженером в Avito.
Расскажем о том, кто такие Python-разработчики и какие задачи они решают. Поговорим о мотивации в обучении и скилах, которые пригодятся на любом этапе карьеры. Затронем тему трудоустройства — что нужно знать и уметь, чтобы позвали на собеседование и предложили оффер.
Приходите, чтобы определиться с выбором языка, лучше понять индустрию и особенности профессии изнутри.
🎉Среди участников, присутствующих на встрече, разыграем грант в размере 50% стоимости нашей полной программы по обучению Python-разработке.
Встречаемся онлайн, 31 марта, в 20:00 по Москве. Участие бесплатное. Регистрируйтесь по ссылке!
👍4
In Python, you can override square brackets operator (
The unusual thing here is
But what
You can even combine tuple and slice syntaxes:
[]
) by defining __getitem__
magic method. The example is Cycle
object that virtually contains an infinite number of repeated elements: class Cycle:
def __init__(self, lst):
self._lst = lst
def __getitem__(self, index):
return self._lst[index % len(self._lst)]
print(Cycle(['a', 'b', 'c'])[100]) # prints 'b'
The unusual thing here is
[]
operator supports a unique syntax. It can be used not only like this — [2]
, but also like this — [2:10]
, or [2:10:2]
, or [2::2]
, or even [:]
. The semantic is [start:stop:step]
but you can use it any way you want for your custom objects.But what
__getitem__
gets as an index
parameter if you call it using that syntax? The slice objects exist precisely for this case.In : class Inspector:
...: def __getitem__(self, index):
...: print(index)
...:
In : Inspector()[1]
1
In : Inspector()[1:2]
slice(1, 2, None)
In : Inspector()[1:2:3]
slice(1, 2, 3)
In : Inspector()[:]
slice(None, None, None)
You can even combine tuple and slice syntaxes:
In : Inspector()[:, 0, :]
(slice(None, None, None), 0, slice(None, None, None))
slice
is not doing anything for you except simply storing start
, stop
and step
attributes.In : s = slice(1, 2, 3)
In : s.start
Out: 1
In : s.stop
Out: 2
In : s.step
Out: 3
👍5
If you want to ignore some exception, you probably do something like this:
That will work (without printing anything), but
try:
lst = [1, 2, 3, 4, 5]
print(lst[10])
except IndexError:
pass
That will work (without printing anything), but
contextlib
let you do the same more expressively and semantically correct:from contextlib import suppress
with suppress(IndexError):
lst = [1, 2, 3, 4, 5]
lst[10]
👍17
In Python,
Despite asymmetry, that is not a mistake nor an accident. It makes perfect sense since it allows you to glue together two adjacent intervals without risk of one-off errors:
Compare to closed intervals that feel more “natural”:
This is also a reason for indexing to start from zero: range(0, N) has exactly
Dijkstra wrote an excellent article on the subject back in 1982.
range()
defines all integers in a half-open interval. So range(2, 10)
means, speaking mathematically, [2, 10)
. Or, speaking Python, [2, 3, 4, 5, 6, 7, 8, 9]
.Despite asymmetry, that is not a mistake nor an accident. It makes perfect sense since it allows you to glue together two adjacent intervals without risk of one-off errors:
[a, c) = [a, b) + [b, c)
Compare to closed intervals that feel more “natural”:
[a, c] = [a, b] + [b+1, c]
This is also a reason for indexing to start from zero: range(0, N) has exactly
N
elements.Dijkstra wrote an excellent article on the subject back in 1982.
👍7
Не можете продлить нужный сервис, оплатить хостинг или получить деньги из-за рубежа?
Ребята из rk.finaxe.ru тоже столкнулись с данной проблемой и запустили сервис, в котором граждане РФ могут оформить онлайн карту Visa или Mastercard в банке Казахстана.
Для чего это нужно:
— Оплата любых зарубежных сервисов и покупок
— Получение денег из-за рубежа
— Использование в путешествиях
Весь процесс проходит онлайн, от вас потребуется только загранпаспорт, даже вставать с дивана не понадобится!
Оформить заявку и ознакомиться с FAQ можно в боте:
https://t.me/Robokazakh_bot
Ребята из rk.finaxe.ru тоже столкнулись с данной проблемой и запустили сервис, в котором граждане РФ могут оформить онлайн карту Visa или Mastercard в банке Казахстана.
Для чего это нужно:
— Оплата любых зарубежных сервисов и покупок
— Получение денег из-за рубежа
— Использование в путешествиях
Весь процесс проходит онлайн, от вас потребуется только загранпаспорт, даже вставать с дивана не понадобится!
Оформить заявку и ознакомиться с FAQ можно в боте:
https://t.me/Robokazakh_bot
🔥4
Forwarded from Python академия
Работа с процессами в Python
С появлением многоядерных процессоров стала общеупотребительной практика распространять нагрузку на все доступные ядра. Существует два основных подхода в распределении нагрузки: использование процессов и потоков. О первом мы как раз сейчас и поговорим.
Подробнее
Подписывайтесь на канал 👉@pythonofff
С появлением многоядерных процессоров стала общеупотребительной практика распространять нагрузку на все доступные ядра. Существует два основных подхода в распределении нагрузки: использование процессов и потоков. О первом мы как раз сейчас и поговорим.
Подробнее
Подписывайтесь на канал 👉@pythonofff
👍8
Sometimes you need to know the size of a generator without retrieving the actual values. Some generators support
The straightforward solution is to use an intermediate list:
Though fully functional, this solution requires enough memory to store all the yielded values. The simple idiom allows to avoid such a waste:
len()
, but this is not the rule:In : len(range(10000))
Out: 10000
In : gen = (x ** 2 for x in range(10000))
In : len(gen)
...
TypeError: object of type 'generator' has no len()
The straightforward solution is to use an intermediate list:
In : len(list(gen))
Out: 10000
Though fully functional, this solution requires enough memory to store all the yielded values. The simple idiom allows to avoid such a waste:
In : sum(1 for _ in gen)
Out: 10000
👍6👎1
Сбор данных с обходом капчи посредством PYAUTOGUI, KERAS и TENSORFLOW
Существует большое количество методов для автоматического сбора и обработки больших объемов данных из веб-ресурсов. Однако иногда недоступно извлечение данных с помощью автоматизированного кода, выполняющего GET-запросы с последующим парсингом HTML-кода, и его преобразованием в необходимый формат, также, как и все смежные методы. В таких случаях на помощь может прийти эмулятор действия пользователя («кликер», «бот», «робот»).
Подробнее
Существует большое количество методов для автоматического сбора и обработки больших объемов данных из веб-ресурсов. Однако иногда недоступно извлечение данных с помощью автоматизированного кода, выполняющего GET-запросы с последующим парсингом HTML-кода, и его преобразованием в необходимый формат, также, как и все смежные методы. В таких случаях на помощь может прийти эмулятор действия пользователя («кликер», «бот», «робот»).
Подробнее
👍4