Разбор URL
Функция urlparse из модуля urllib.parse разбирает URL на составные части: протокол, имя хоста, порт, путь, запрос и прочие.
Имя хоста, порт, логин и пароль объединены в поле netloc, но их компоненты доступны для чтения по этим атрибутам:
Собрать обратно ParseResult в URL:
Если мы хотим в URL поменять какие-то части, удобно делать вот так:
Однако таким способом нельзя поменять компоненты netloc, например, отдельно порт. netloc нужно менять целиком:
Функция urlparse из модуля urllib.parse разбирает URL на составные части: протокол, имя хоста, порт, путь, запрос и прочие.
>>> u1 = urlparse('https://tirinox:[email protected]:8080/some/page/index.html?page=2&action=login')
>>> u1
ParseResult(scheme='https', netloc='tirinox:[email protected]:8080', path='/some/page/index.html', params='', query='page=2&action=login', fragment='')
>>> u1.scheme, u1.query, u1.netloc
('https', 'page=2&action=login', 'tirinox:[email protected]:8080')
Имя хоста, порт, логин и пароль объединены в поле netloc, но их компоненты доступны для чтения по этим атрибутам:
>>> u1.username, u1.password, u1.hostname, u1.port
('tirinox', '1234', 'www.site.com', 8080)
Собрать обратно ParseResult в URL:
>>> u1.geturl()
'https://www.site.com:8080/some/page/index.html?page=2&action=login'
Если мы хотим в URL поменять какие-то части, удобно делать вот так:
>>> u1._replace(scheme='http').geturl()
'http://www.site.com:8080/some/page/index.html?page=2&action=login'
Однако таким способом нельзя поменять компоненты netloc, например, отдельно порт. netloc нужно менять целиком:
>>> u1._replace(netloc="user:[email protected]:8090").geturl()
'https://user:[email protected]:8090/some/page/index.html?page=2&action=login'
Needl – генератор случайного интернет-трафика
Позволяет скрыть ваш истинный трафик, что, по сути, делает ваши данные «иглой в стоге сена» и, следовательно, их труднее найти.
Цель проекта состоит в том, чтобы вашему интернет-провайдеру, правительству и т. д. было сложнее отслеживать вашу историю просмотров и привычки.
#GitHub | #Python #Privacy
@pro_python_code
Позволяет скрыть ваш истинный трафик, что, по сути, делает ваши данные «иглой в стоге сена» и, следовательно, их труднее найти.
Цель проекта состоит в том, чтобы вашему интернет-провайдеру, правительству и т. д. было сложнее отслеживать вашу историю просмотров и привычки.
#GitHub | #Python #Privacy
@pro_python_code
🐍 Пишем свою «Матрицу» на Python
Изучать новое можно по-разному. Одним нравится сначала штудировать теорию, а потом применять её на практике. Другие предпочитают учиться исключительно на примерах, найденных на любимом Stackoverflow. А кто-то вообще загружает навыки управления вертолётом и технику боевых единоборств по выделенному каналу прямо в мозг.
В любом случае без практических упражнений не обойтись. После ускоренной загрузки знаний Нео всё равно должен пройти спарринг с Морфеусом, чтобы научиться применять терабайты загруженных навыков на практике. Только вот упражнения бывают разные. Одно дело — лихо взлететь под потолок и проломить балки восточного спортзала, и совсем другое — методично час за часом шлифовать своё мастерство.
Читать дальше
@pro_python_code
Изучать новое можно по-разному. Одним нравится сначала штудировать теорию, а потом применять её на практике. Другие предпочитают учиться исключительно на примерах, найденных на любимом Stackoverflow. А кто-то вообще загружает навыки управления вертолётом и технику боевых единоборств по выделенному каналу прямо в мозг.
В любом случае без практических упражнений не обойтись. После ускоренной загрузки знаний Нео всё равно должен пройти спарринг с Морфеусом, чтобы научиться применять терабайты загруженных навыков на практике. Только вот упражнения бывают разные. Одно дело — лихо взлететь под потолок и проломить балки восточного спортзала, и совсем другое — методично час за часом шлифовать своё мастерство.
Читать дальше
@pro_python_code
⚡️ Атрибуты функций
defaults — кортеж с значениями по умолчанию. code — да-да, вы правильно поняли, код функции.
globals — глобальные значения в модуле, где функция была определена.
И хочу напомнить про dict — переменную, которая позволяет добавлять свои атрибуты функции.
#теория
__name__
возвращает имя функции.name__
возвращ— полный путь к функции (ClassC.ClassD.function).ции. __qualn
—
модуль, в котором она находится.defaults — кортеж с значениями по умолчанию. code — да-да, вы правильно поняли, код функции.
globals — глобальные значения в модуле, где функция была определена.
И хочу напомнить про dict — переменную, которая позволяет добавлять свои атрибуты функции.
#теория
DALL·E Flow — это модель, позволяющая создавать изображений высокой четкости из текста.
Github https://github.com/jina-ai/dalle-flow
Colab: https://colab.research.google.com/github/jina-ai/dalle-flow/blob/main/client.ipynb
@pro_python_code
Github https://github.com/jina-ai/dalle-flow
Colab: https://colab.research.google.com/github/jina-ai/dalle-flow/blob/main/client.ipynb
@pro_python_code
🚀 @machinelearning_interview - здесь, где мы собираем все возможные вопросы и ответы с собеседований по Машинному обучению, нейронным сетям и Глубокому обучению. Для всех уровней разработчиков. Желающие помочь, могут присылать вопросы, с которыми они сталкивались на собеседованиях.
Посмотреть
Посмотреть
🐍📚 Создаем аналог LiveLib.ru на Flask. Часть 2: CRUD, IntegrityError и валидация WTForms
Читать
1 часть
@pro_python_code
Читать
1 часть
@pro_python_code
Библиотека программиста
🐍📚 Создаем аналог LiveLib.ru на Flask. Часть 2: CRUD, IntegrityError и валидация WTForms
В заключительной части: реализуем набор операций для создания, редактирования и удаления записей; обеспечиваем автоматическое сжатие загружаемых обложек до нужного размера с помощью Pillow.
⚡️ Профилируем код
Не можете найти слабое место у вашего алгоритма (не можете, поскольку его нет 😎 )? Давайте тогда посмотрим на использование ресурсов с помощью scalene.
Установка:
#миниурок #scalene
Не можете найти слабое место у вашего алгоритма (
Установка:
pip install scalene
Вам не нужно ничего добавлять в код, просто пишете scalene file.py
и получаете вывод, как на фото выше. Преимущества и сравнение можно найти тут.#миниурок #scalene
globals(), locals(), vars(), dir()
Программист на Python может узнать, какие именно переменные определенны в данный момент в интерпретаторе. Переменные можно разделить на локальные и глобальные. Глобальные определены на верхнем уровне кода снаружи функций и классов (грубо говоря без отступов слева). Локальные переменные наоборот определены внутри своих зон видимости, ограниченных классами и функциями.
Функция globals() выдает словарь глобальных переменных (ключ – имя переменной). Функция locals() возвращает словарь только локальных переменных. Пример:
Обратите внимание, что переменная y в locals() имеет другое значение, нежели чем в globals(). Это две разные переменные из разных областей, но внутри функции приоритет имеет локальная y.
Еще важно знать, что в список переменных входят не только простые переменные, которые вы определяете через знак присваивания, но и функции, классы и импортированные модули!
Через словари из locals() и globals() переменные можно не только читать, но и создавать, перезаписывать и удалять:
Функция vars() ведет себя как locals(), если вызвана без аргумента, а если с аргументом, то она просто получает
В глобальном контексте все три функции возвращают одно и тоже – глобальные переменные. Проверьте:
Функциия dir(), будучи вызвана без параметра, возвращает список имен переменных. Глобальных или локальных в зависимости от места вызова:
Все рассмотренные выше функции являются встроенными и не требуют импортов.
@pro_python_code
Программист на Python может узнать, какие именно переменные определенны в данный момент в интерпретаторе. Переменные можно разделить на локальные и глобальные. Глобальные определены на верхнем уровне кода снаружи функций и классов (грубо говоря без отступов слева). Локальные переменные наоборот определены внутри своих зон видимости, ограниченных классами и функциями.
Функция globals() выдает словарь глобальных переменных (ключ – имя переменной). Функция locals() возвращает словарь только локальных переменных. Пример:
x, y = 5, 10
def test():
y, z = 33, 44
print('globals:', globals())
print('locals:', locals())
test()
"""Вывод:
globals: {'__name__': '__main__', ... '__file__': '/Users/.../vars.py', '__cached__': None, 'x': 5, 'y': 10, 'test': <function test at 0x107677280>}
locals: {'y': 33, 'z': 44}"""
Обратите внимание, что переменная y в locals() имеет другое значение, нежели чем в globals(). Это две разные переменные из разных областей, но внутри функции приоритет имеет локальная y.
Еще важно знать, что в список переменных входят не только простые переменные, которые вы определяете через знак присваивания, но и функции, классы и импортированные модули!
Через словари из locals() и globals() переменные можно не только читать, но и создавать, перезаписывать и удалять:
>>> x = 10
>>> globals()['x'] = 5
>>> x
5
>>> globals()['new_var'] = 10
>>> new_var
10
>>> del globals()['new_var']
>>> new_var
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'new_var' is not defined
Функция vars() ведет себя как locals(), если вызвана без аргумента, а если с аргументом, то она просто получает
_ _ dict _ _
от аргумента. Если его нет у аргумента, то будет TypeError.class Foo:
def __init__(self):
self.x = 5
f = Foo()
print(vars(f)) # {'x': 5}
print(vars(f) == f.__dict__) # True
В глобальном контексте все три функции возвращают одно и тоже – глобальные переменные. Проверьте:
print(globals())
print(locals())
print(vars())
print(globals() == locals() == vars()) # True
Функциия dir(), будучи вызвана без параметра, возвращает список имен переменных. Глобальных или локальных в зависимости от места вызова:
def test():
x = 10
print(dir()) # ['x']
y = 10
test()
print(dir()) # ['__annotations__', ..., '__spec__', 'test', 'y']
Все рассмотренные выше функции являются встроенными и не требуют импортов.
@pro_python_code
Каким будет результат выполнения кода?
Anonymous Quiz
34%
1
3%
21
2%
12
24%
2
6%
None
11%
Error
20%
Узнать ответ
jgram – Библиотека для написания телеграм ботов, что позволяет описывать их структуру в json файлах
Призвана ускорить написание ботов, и сделать их структуру более гибкой и понятной
Библиотека построена на базе aiogram2.21
@pro_python_code | #Interesting #Python #Telegram #Bot
Призвана ускорить написание ботов, и сделать их структуру более гибкой и понятной
Библиотека построена на базе aiogram2.21
⚙
Github@pro_python_code | #Interesting #Python #Telegram #Bot
⚫️ Black - это библиотека для автоматического форматирования вашего Python кода, в соответствии с требованиями PEP8 🔥
Документация
Примеры кода
@pro_python_code
Документация
Примеры кода
@pro_python_code
🐍🚀 Создаем рекрутинговый портал на Django: часть 1
Разрабатываем портал, на котором каждый рекрутер сможет найти своего разработчика :). Система поиска позволяет подобрать нужного специалиста по резюме, портфолио или описанию проектов; рейтинг проекта поможет оценить квалификацию, а мессенджер – послать оффер.
Читать дальше
@pro_python_code
Разрабатываем портал, на котором каждый рекрутер сможет найти своего разработчика :). Система поиска позволяет подобрать нужного специалиста по резюме, портфолио или описанию проектов; рейтинг проекта поможет оценить квалификацию, а мессенджер – послать оффер.
Читать дальше
@pro_python_code
Обнаружение лиц на Python в 19 строк кода.
Сперва не забудьте установить модуль
При желании, можно также воспользоваться Eye & Mouth cascades для обнаружения глаз и рта, соответственно.
Дальше конвертируем исходное изображением в чёрно белое.
И скармливаем это всё в метод
Ну и как вы знаете, cv2 шикарно работает с видео потоком.
Так что можно создать, например, распознавание своего лица на видео потоке с камеры? :3
Вариантов много )))
Код со скрина здесь.
@pro_python_code
Сперва не забудьте установить модуль
cv2
командой pip install opencv-python
Затем при помощи этой крутой библиотеки, создайте HAAR Face Cascade.При желании, можно также воспользоваться Eye & Mouth cascades для обнаружения глаз и рта, соответственно.
Дальше конвертируем исходное изображением в чёрно белое.
И скармливаем это всё в метод
detectMultiScale
.Ну и как вы знаете, cv2 шикарно работает с видео потоком.
Так что можно создать, например, распознавание своего лица на видео потоке с камеры? :3
Вариантов много )))
Код со скрина здесь.
@pro_python_code
🐍🚀 Создаем рекрутинговый портал на Django: часть 2
В этой части: добавление обложек проектов с фронтенда, создание системы авторизации, разработка основной функциональности приложения «Пользователи» и связь проектов с профилями.
Читать
Часть 1
@pro_python_code
В этой части: добавление обложек проектов с фронтенда, создание системы авторизации, разработка основной функциональности приложения «Пользователи» и связь проектов с профилями.
Читать
Часть 1
@pro_python_code
Python RU
globals(), locals(), vars(), dir() Программист на Python может узнать, какие именно переменные определенны в данный момент в интерпретаторе. Переменные можно разделить на локальные и глобальные. Глобальные определены на верхнем уровне кода снаружи функций…
В дополнение об областях видимости переменных
В отличие он некоторых других языков в Python блоки типа
Частая ошибка – затирание внешней переменной в цикле for:
Зоны видимости отделяются только функциями, классами и модулями. Здесь все переменные x – разные:
Самая широкая зона видимости называется builtin. В нее попадают все имена, известные интерпретатору в данный момент, включая вещи импортированные из других модулей.
Казалось бы мы затерли pi, но мы затерли его лишь в глобальной области видимости. Повторно импортируя pi, мы получаем старую переменную с тем же адресом, иными словами мы достаем ее из builtin области в global.
Вы знали о всех этих особенностях?
@pro_python_code
В отличие он некоторых других языков в Python блоки типа
for, if, while, with
не создают областей видимости (scope) для переменных, то есть переменная внутри и снаружи блока будет одна и та же:x = 1
if True:
x = 2
print(x) # 2
Частая ошибка – затирание внешней переменной в цикле for:
i = 10
for i in range(5): # затирает i
...
print(i) # 4
Зоны видимости отделяются только функциями, классами и модулями. Здесь все переменные x – разные:
x = 1
class Foo:
x = 2
def method(self):
x = 3
return x
print(x, Foo.x, Foo().method()) # все 3 разные
Самая широкая зона видимости называется builtin. В нее попадают все имена, известные интерпретатору в данный момент, включая вещи импортированные из других модулей.
>>> from math import pi
>>> pi, id(pi)
(3.141592653589793, 4465320624)
>>> pi = 3
>>> pi, id(pi)
(3, 4462262880)
>>> from math import pi
>>> pi, id(pi)
(3.141592653589793, 4465320624)
Казалось бы мы затерли pi, но мы затерли его лишь в глобальной области видимости. Повторно импортируя pi, мы получаем старую переменную с тем же адресом, иными словами мы достаем ее из builtin области в global.
Вы знали о всех этих особенностях?
@pro_python_code
Translators – Python библиотека, целью которой является бесплатный, множественный и приятный перевод
Он основан на интерфейсе перевода Google, Yandex, Microsoft (Bing), Baidu, Alibaba, Tencent, NetEase (Youdao), Sogou, Kingsoft (Iciba), Iflytek, Naver (Papago), Deepl, Reverso, Itranslate, Caiyun, Argos, TranslateCom, Utibet и многих других сервисов
⤷ Ссылка на проект
@pro_python_code | #Interesting #Python
Он основан на интерфейсе перевода Google, Yandex, Microsoft (Bing), Baidu, Alibaba, Tencent, NetEase (Youdao), Sogou, Kingsoft (Iciba), Iflytek, Naver (Papago), Deepl, Reverso, Itranslate, Caiyun, Argos, TranslateCom, Utibet и многих других сервисов
⤷ Ссылка на проект
@pro_python_code | #Interesting #Python