Python RU
13.4K subscribers
868 photos
41 videos
36 files
1.12K links
Все для python разработчиков

админ - @haarrp

@python_job_interview - Python собеседования

@ai_machinelearning_big_data - машинное обучение

@itchannels_telegram - 🔥лучшие ит-каналы

@programming_books_it - it книги

@pythonl

РКН: clck.ru/3Fmy2j
加入频道
​​Разбор URL

Функция 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
🐍 Пишем свою «Матрицу» на Python

Изучать новое можно по-разному. Одним нравится сначала штудировать теорию, а потом применять её на практике. Другие предпочитают учиться исключительно на примерах, найденных на любимом Stackoverflow. А кто-то вообще загружает навыки управления вертолётом и технику боевых единоборств по выделенному каналу прямо в мозг.

В любом случае без практических упражнений не обойтись. После ускоренной загрузки знаний Нео всё равно должен пройти спарринг с Морфеусом, чтобы научиться применять терабайты загруженных навыков на практике. Только вот упражнения бывают разные. Одно дело — лихо взлететь под потолок и проломить балки восточного спортзала, и совсем другое — методично час за часом шлифовать своё мастерство.

Читать дальше

@pro_python_code
⚡️ Атрибуты функций

__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
🚀 @machinelearning_interview - здесь, где мы собираем все возможные вопросы и ответы с собеседований по Машинному обучению, нейронным сетям и Глубокому обучению. Для всех уровней разработчиков. Желающие помочь, могут присылать вопросы, с которыми они сталкивались на собеседованиях.

Посмотреть
⚡️ Профилируем код

Не можете найти слабое место у вашего алгоритма (не можете, поскольку его нет 😎)? Давайте тогда посмотрим на использование ресурсов с помощью scalene.

Установка: pip install scalene

Вам не нужно ничего добавлять в код, просто пишете scalene file.py и получаете вывод, как на фото выше. Преимущества и сравнение можно найти тут.

#миниурок #scalene
globals(), locals(), vars(), dir()

Программист на 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

Github

@pro_python_code | #Interesting #Python #Telegram #Bot
⚫️ Black - это библиотека для автоматического форматирования вашего Python кода, в соответствии с требованиями PEP8 🔥

Документация
Примеры кода

@pro_python_code
🐍🚀 Создаем рекрутинговый портал на Django: часть 1

Разрабатываем портал, на котором каждый рекрутер сможет найти своего разработчика :). Система поиска позволяет подобрать нужного специалиста по резюме, портфолио или описанию проектов; рейтинг проекта поможет оценить квалификацию, а мессенджер – послать оффер.

Читать дальше

@pro_python_code
Обнаружение лиц на Python в 19 строк кода.

Сперва не забудьте установить модуль cv2 командой pip install opencv-python
Затем при помощи этой крутой библиотеки, создайте HAAR Face Cascade.
При желании, можно также воспользоваться Eye & Mouth cascades для обнаружения глаз и рта, соответственно.

Дальше конвертируем исходное изображением в чёрно белое.
И скармливаем это всё в метод detectMultiScale.

Ну и как вы знаете, cv2 шикарно работает с видео потоком.
Так что можно создать, например, распознавание своего лица на видео потоке с камеры? :3
Вариантов много )))

Код со скрина здесь.

@pro_python_code
🐍🚀 Создаем рекрутинговый портал на Django: часть 2

В этой части: добавление обложек проектов с фронтенда, создание системы авторизации, разработка основной функциональности приложения «Пользователи» и связь проектов с профилями.

Читать
Часть 1

@pro_python_code
Python RU
globals(), locals(), vars(), dir() Программист на Python может узнать, какие именно переменные определенны в данный момент в интерпретаторе. Переменные можно разделить на локальные и глобальные. Глобальные определены на верхнем уровне кода снаружи функций…
В дополнение об областях видимости переменных

В отличие он некоторых других языков в 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
TranslatorsPython библиотека, целью которой является бесплатный, множественный и приятный перевод

Он основан на интерфейсе перевода 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