Параметры и аргументы в Python
100% специалистов в 50% случаях путают термины "параметр" и "аргумент" 😰
Ничего не поможет, но на всякий случай объясним разницу.
100% специалистов в 50% случаях путают термины "параметр" и "аргумент" 😰
Ничего не поможет, но на всякий случай объясним разницу.
👍11😁2❤1🔥1🙏1
🧐 Где и кто использует ИИ для написания кода
Тут учёные мужи выкатили исследование: проанализировали 80 миллионов коммитов на Python от 200 тысяч разрабов, чтобы понять, как глубоко ИИ уже залез в наш код. Натренировали для этого специальную нейронку, которая палит сгенерированный код.
И вот что они откопали 👇🏻
1️⃣ Гонка вооружений. США ожидаемо впереди — там уже 30% Python-кода на GitHub пишет ИИ. Европа дышит в спину (Германия 24%, Франция 23%). А вот Россия и Китай — «поздние последователи», у нас всего 15.4%.
2️⃣ Джуны на стероидах. Самое интересное: новички юзают ИИ намного активнее ветеранов. У опытных разрабов только 28% кода сгенерировано, а у тех, кто только пришел на GitHub — аж 41%. Получается, ИИ сглаживает разрыв между джуном и сеньором? Или просто плодит тех, кто без Copilot и цикл написать не может?
3️⃣ ИИ как учитель. Использование нейронок подталкивает разрабов к экспериментам. Они начинают чаще пробовать новые библиотеки и их комбинации. То есть, ИИ не только пишет за тебя рутину, но и работает как спарринг-партнёр для изучения нового.
4️⃣ А деньги где? Консервативная оценка годовой экономической выгоды от ИИ в кодинге только в США — $9-14 миллиардов. А если верить более оптимистичным оценкам роста продуктивности — то все $64-96 миллиардов 😱. И это только за 2024 год.
Выходит, мы уже прошли стадию отрицания. ИИ — это не игрушка и не угроза, а фундаментальный сдвиг в работе программиста, который уже экономит миллиарды.
Тут учёные мужи выкатили исследование: проанализировали 80 миллионов коммитов на Python от 200 тысяч разрабов, чтобы понять, как глубоко ИИ уже залез в наш код. Натренировали для этого специальную нейронку, которая палит сгенерированный код.
И вот что они откопали 👇🏻
1️⃣ Гонка вооружений. США ожидаемо впереди — там уже 30% Python-кода на GitHub пишет ИИ. Европа дышит в спину (Германия 24%, Франция 23%). А вот Россия и Китай — «поздние последователи», у нас всего 15.4%.
2️⃣ Джуны на стероидах. Самое интересное: новички юзают ИИ намного активнее ветеранов. У опытных разрабов только 28% кода сгенерировано, а у тех, кто только пришел на GitHub — аж 41%. Получается, ИИ сглаживает разрыв между джуном и сеньором? Или просто плодит тех, кто без Copilot и цикл написать не может?
3️⃣ ИИ как учитель. Использование нейронок подталкивает разрабов к экспериментам. Они начинают чаще пробовать новые библиотеки и их комбинации. То есть, ИИ не только пишет за тебя рутину, но и работает как спарринг-партнёр для изучения нового.
4️⃣ А деньги где? Консервативная оценка годовой экономической выгоды от ИИ в кодинге только в США — $9-14 миллиардов. А если верить более оптимистичным оценкам роста продуктивности — то все $64-96 миллиардов 😱. И это только за 2024 год.
Выходит, мы уже прошли стадию отрицания. ИИ — это не игрушка и не угроза, а фундаментальный сдвиг в работе программиста, который уже экономит миллиарды.
arXiv.org
Who is using AI to code? Global diffusion and impact of generative AI
Generative coding tools promise big productivity gains, but uneven uptake could widen skill and income gaps. We train a neural classifier to spot AI-generated Python functions in 80 million GitHub...
🔥7👍3👏2
GPT Researcher напишет за вас исследование🕵️♂️
GPT Researcher – это open-source агент для глубокого автоматизированного исследования на любую тему, будь то инфа из веба или ваши локальные доки. Обещают подробные, фактические и непредвзятые отчеты с цитатами.
Главная идея – разделить работу:
▫️ Планировщик генерирует исследовательские вопросы.
▫️ Исполнители (агенты) собирают инфу по каждому вопросу.
▫️ Паблишер собирает все в один красивый отчет.
Что этот инструмент умеет:
👉🏻 Deep Research: Продвинутый рекурсивный поиск, который копает вглубь темы.
👉🏻 Работа с локальными файлами: PDF, Word, Excel – все съест и переварит.
👉🏻 Мульти-агентная система на
👉🏻 Экспорт в PDF, Word и другие форматы.
👉🏻 Есть фронтенд (и легковесный, и на
Для старта нужен Python 3.11+, ключи
GPT Researcher – это open-source агент для глубокого автоматизированного исследования на любую тему, будь то инфа из веба или ваши локальные доки. Обещают подробные, фактические и непредвзятые отчеты с цитатами.
Главная идея – разделить работу:
▫️ Планировщик генерирует исследовательские вопросы.
▫️ Исполнители (агенты) собирают инфу по каждому вопросу.
▫️ Паблишер собирает все в один красивый отчет.
Что этот инструмент умеет:
👉🏻 Deep Research: Продвинутый рекурсивный поиск, который копает вглубь темы.
👉🏻 Работа с локальными файлами: PDF, Word, Excel – все съест и переварит.
👉🏻 Мульти-агентная система на
LangGraph
для еще более качественных результатов.👉🏻 Экспорт в PDF, Word и другие форматы.
👉🏻 Есть фронтенд (и легковесный, и на
NextJS
).Для старта нужен Python 3.11+, ключи
OpenAI
и Tavily
, а дальше pip install gpt-researcher
или через git clone
.GitHub
GitHub - assafelovic/gpt-researcher: LLM based autonomous agent that conducts deep local and web research on any topic and generates…
LLM based autonomous agent that conducts deep local and web research on any topic and generates a long report with citations. - assafelovic/gpt-researcher
👍3❤1👏1
🐍 from exercise import "Самый богатый"
Представьте, что у вас есть "таблица"
Ваша задача — найти самый "богатого" клиента, то есть "столбец" с максимальной суммой всех счетов.
🎯 Задача:
Напишите функцию
Пример:
Разберем этот случай:
* Сумма
* Сумма
* Сумма
Самый богатый клиент имеет состояние
➡️ Ваша функция для
Еще пример:
* Портфель 0:
* Портфель 1:
* Портфель 2:
Результат:
#задача | 🍩 Поддержать канал 🫶
Представьте, что у вас есть "таблица"
accounts
, где: accounts[i][j]
— это сумма, которую некий j
-й клиент имеет на счете в i
-м банке.Ваша задача — найти самый "богатого" клиента, то есть "столбец" с максимальной суммой всех счетов.
🎯 Задача:
Напишите функцию
find_richest(accounts: list[list[int]]) -> int
, которая принимает таблицу accounts
и возвращает максимальную сумму по столбцам.Пример:
accounts = [[1, 2, 5], [3, 6, 1]]
Разберем этот случай:
* Сумма
accounts[0][0] + accounts[1][0] = 1 + 3 = 4
.* Сумма
accounts[0][1] + accounts[1][1] = 2 + 6 = 8
.* Сумма
accounts[0][2] + accounts[1][2] = 5 + 1 = 6
.Самый богатый клиент имеет состояние
8
.➡️ Ваша функция для
[[1,2,5],[3,6,1]]
должна вернуть 8
.Еще пример:
accounts = [[10, 5, 100], [20, 15, 0]]
* Портфель 0:
10 + 20 = 30
* Портфель 1:
5 + 15 = 20
* Портфель 2:
100 + 0 = 100
Результат:
100
#задача | 🍩 Поддержать канал 🫶
CloudTips
CloudTips – чаевые и донаты картой моментально
Сервис для приема безналичных чаевых и донатов CloudTips
👍4❤1🔥1
Сравниваем три gamedev-библиотеки на Python 🎮
Часто, когда речь заходит про разработку игр на Python, на ум приходит одно название — PyGame. Это, конечно, нестареющая классика, которой уже больше 20 лет, но мир не стоит на месте.
Вот вам небольшая подборка-сравнение трёх популярных библиотек: старого-доброго PyGame, портированного с C++ монстра Cocos2d и относительно свежего Ursina Engine.
Часто, когда речь заходит про разработку игр на Python, на ум приходит одно название — PyGame. Это, конечно, нестареющая классика, которой уже больше 20 лет, но мир не стоит на месте.
Вот вам небольшая подборка-сравнение трёх популярных библиотек: старого-доброго PyGame, портированного с C++ монстра Cocos2d и относительно свежего Ursina Engine.
🔥5🙏2❤1
НОВАЯ ОТКРЫТАЯ SOTA LLM ДЛЯ ПРОГРАММИРОВАНИЯ 🤖
Недавно появился новый персонаж среди LLM для написания кода — Kimi-Dev-72B от Moonshot AI.
Что в неё интересного:
▫️Это новая SOTA (state-of-the-art) среди open-source моделей на бенчмарке SWE-bench Verified (60.4%). Подвинули всех старичков.
▫️Главная фишка — обучение. Модель получала награду, только если проходили все тесты в её Docker-окружении.
▫️Работает в два этапа: сначала находит нужные файлы для правки (File Localization), а потом уже редактирует код (Code Editing).
▫️Сделана на базе Qwen 2.5-72B, обучена на гигатоннах кода с GitHub. Лицензия — MIT, можно брать и ковырять.
Потыкать можно тут:
👉🏻 GitHub
👉🏻 Hugging Face
👉🏻 Демка-чат
Недавно появился новый персонаж среди LLM для написания кода — Kimi-Dev-72B от Moonshot AI.
Что в неё интересного:
▫️Это новая SOTA (state-of-the-art) среди open-source моделей на бенчмарке SWE-bench Verified (60.4%). Подвинули всех старичков.
▫️Главная фишка — обучение. Модель получала награду, только если проходили все тесты в её Docker-окружении.
▫️Работает в два этапа: сначала находит нужные файлы для правки (File Localization), а потом уже редактирует код (Code Editing).
▫️Сделана на базе Qwen 2.5-72B, обучена на гигатоннах кода с GitHub. Лицензия — MIT, можно брать и ковырять.
Потыкать можно тут:
👉🏻 GitHub
👉🏻 Hugging Face
👉🏻 Демка-чат
👍4❤2🙏1
✍️ Решения вчерашней задачи
Я провафлил, поэтому по факту позавчерашней 😬
🏆 Лучшее решение по Big O
🤔 Как это работает?
Это классический подход "в лоб", который, тем не менее, является самым производительным по памяти.
1. Проходим по клиентам: Внешний цикл
2. Считаем накопления: Внутренний цикл
3. Ищем максимум: После подсчета суммы для очередного клиента, мы сравниваем ее с уже найденным максимумом
Сложность по времени: O(N * M), где N - количество банков (строк), M - количество клиентов (столбцов). Нам нужно проверить каждую ячейку.
Сложность по памяти: O(1). Мы используем всего несколько переменных для хранения промежуточных сумм и итогового максимума, не создавая новых больших структур данных.
🐍 Самое "питоничное" решение
Это как раз предложенный вариант, он самый красивый и идиоматичным для данной задачи.
🤔 Как это работает?
Разберем эту строку по частям, изнутри наружу:
1.
2.
3.
4.
Сложность по времени: O(N * M). Хотя код и короткий, он всё так же проходит по каждому элементу для вычисления сумм.
Сложность по памяти: O(M).
💡 Вариант с Numpy
Тоже отличный 👍🏻
Я провафлил, поэтому по факту позавчерашней 😬
🏆 Лучшее решение по Big O
def find_richest(accounts: list[list[int]]) -> int:
if not accounts or not accounts[0]:
return 0
num_clients = len(accounts[0])
max_wealth = 0
for client_index in range(num_clients):
current_client_wealth = 0
for bank_account in accounts:
current_client_wealth += bank_account[client_index]
if current_client_wealth > max_wealth:
max_wealth = current_client_wealth
return max_wealth
🤔 Как это работает?
Это классический подход "в лоб", который, тем не менее, является самым производительным по памяти.
1. Проходим по клиентам: Внешний цикл
for client_index in range(num_clients)
итерируется по каждому "столбцу" (каждому клиенту).2. Считаем накопления: Внутренний цикл
for bank_account in accounts
проходит по всем банкам (строкам) и суммирует деньги на счетах только текущего клиента.3. Ищем максимум: После подсчета суммы для очередного клиента, мы сравниваем ее с уже найденным максимумом
max_wealth
и обновляем его, если нужно.Сложность по времени: O(N * M), где N - количество банков (строк), M - количество клиентов (столбцов). Нам нужно проверить каждую ячейку.
Сложность по памяти: O(1). Мы используем всего несколько переменных для хранения промежуточных сумм и итогового максимума, не создавая новых больших структур данных.
🐍 Самое "питоничное" решение
Это как раз предложенный вариант, он самый красивый и идиоматичным для данной задачи.
def find_richest(accounts: list[list[int]]) -> int:
return max(map(sum, zip(*accounts)))
🤔 Как это работает?
Разберем эту строку по частям, изнутри наружу:
1.
*accounts
— Оператор *
"распаковывает" внешний список. Если accounts = [[1, 2], [3, 4]]
, то для функции zip
это будет выглядеть как zip([1, 2], [3, 4])
.2.
zip(*accounts)
— Функция zip
принимает несколько итерируемых объектов и "склеивает" их элементы с одинаковыми индексами. В нашем случае она "транспонирует" матрицу: из [[1, 2, 5], [3, 6, 1]]
она создает итератор, который последовательно вернет кортежи-столбцы: (1, 3)
, затем (2, 6)
, и наконец (5, 1)
.3.
map(sum, ...)
— Функция map
применяет функцию sum
к каждому элементу, который ей отдает zip
. То есть, она вычисляет sum((1, 3))
, sum((2, 6))
и sum((5, 1))
, получая поток сумм: 4
, 8
, 6
.4.
max(...)
— Наконец, max
просто находит наибольшее значение в этом потоке сумм. Результат — 8
.Сложность по времени: O(N * M). Хотя код и короткий, он всё так же проходит по каждому элементу для вычисления сумм.
Сложность по памяти: O(M).
zip
и map
создают ленивые итераторы и не хранят всю транспонированную матрицу в памяти. Однако для работы zip
требуется передать в функцию все строки как отдельные аргументы, что временно занимает память, пропорциональную количеству строк (N). В каждой итерации в памяти создается кортеж размером N (количество банков). 💡 Вариант с Numpy
Тоже отличный 👍🏻
import numpy as np
np.array(accounts).sum(axis=0).max()
Telegram
PythonTalk
🐍 from exercise import "Самый богатый"
Представьте, что у вас есть "таблица" accounts, где: accounts[i][j] — это сумма, которую некий j-й клиент имеет на счете в i-м банке.
Ваша задача — найти самый "богатого" клиента, то есть "столбец" с максимальной…
Представьте, что у вас есть "таблица" accounts, где: accounts[i][j] — это сумма, которую некий j-й клиент имеет на счете в i-м банке.
Ваша задача — найти самый "богатого" клиента, то есть "столбец" с максимальной…
👍9🔥2🙏1
This media is not supported in your browser
VIEW IN TELEGRAM
Консольный помощник "The Fuck"🤬
Опечатались в консольной команде? Написали
Например:
Или:
▫️ Как это работает? У
▫️ Установка: Проще простого –
И есть "мгновенный режим" без подтверждений перед изменениями (
Опечатались в консольной команде? Написали
git comit
вместо git commit
или puthon
вместо python
? Есть гениальная Python-утилита, которая позволяет просто написать fuck
после ошибочной команды, и она предложит исправленный вариант!Например:
➜ puthon run_my_super_script.py
No command 'puthon' found...
➜ fuck
python run_my_super_script.py [enter/↑/↓/ctrl+c]
Или:
➜ apt-get install vim
E: Could not open lock file... are you root?
➜ fuck
sudo apt-get install vim [enter/↑/↓/ctrl+c]
▫️ Как это работает? У
The Fuck
куча правил для распознавания типовых ошибок (опечатки, забытый sudo
, неправильные флаги git
и т.д.).▫️ Установка: Проще простого –
pip3 install thefuck --user
(или через brew
/ apt
/ pacman
для вашей системы) и не забудьте добавить eval $(thefuck --alias)
в ваш .bashrc
или .zshrc
. Можно даже eval $(thefuck --alias FUCK)
, чтобы ругаться ГРОМКО.И есть "мгновенный режим" без подтверждений перед изменениями (
fuck --yeah
).🔥12👍4😁2
Что получим при запуске кода?
Anonymous Quiz
25%
SyntaxError
7%
None
15%
<function <lambda> at …>
53%
42
👍9🔥2🙏2