Python RU
13.4K subscribers
871 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
加入频道
🚀 10 идиоматических приемов для эффективного программирования на Python

Программирование само по себе очень увлекательное занятие, а программирование на Python увлекательнее вдвойне, поскольку в данном языке существует много разных способов реализации одних и тех же функциональностей. Однако в большинстве случаев предпочтительно использовать реализации, присущие исключительно Python, характерной особенностью которых являются чистота и краткость кода.

Программирование на Python или любом другом языке — это не высшая математика, здесь многое зависит от степени сформированности ваших навыков. Если вы целенаправленно начнете писатькод в стиле Python (иначе говоря, питонический), то эти техники вскоре пополнят ваш набор инструментов, и постепенно их использование в проектах станет самым привычным делом. Рассмотрим ряд таких простых приемов, которые, я надеюсь, окажутся вам полезны.

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

@pro_python_code
Enumerate

В традиционных языках программирования вам нужна переменная цикла для перебора различных значений контейнера. В Python это упростили: вы можете получить доступ к переменной цикла вместе со значением итерируемого объекта. Функция enumerate(x) возвращает две итерируемые переменные. Одна из них изменяется в диапазоне от 0 до len(x) - 1, а другая представляет собой элементы x.
🚀 Python Собеседование. Вопросы для подготовки


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

@pro_python_code
Для тех , кто ищет работу или фриланс на Python

@python_djangojobs - наш канал вакансий Python
@python_django_work - чат

@datascienceml_jobs вакансии Machine learning /Python
@Machinelearning_Jobs - чат

@hr_itwork - it вакансии
​​Разбор 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