Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Python

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45

Открыть новую тему     Написать ответ в эту тему

Adm10



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здесь обсуждается всё, что связано с использованием Python: программирование, библиотеки, ресурсы и другие вопросы

Python


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

С чего начать?
Простой, понятный и вместе с тем грамотный ресурс на русском языке: pythonworld.ru + самоучитель
Библия PEP8

Всего записей: 35 | Зарегистр. 13-10-2006 | Отправлено: 15:48 16-06-2007 | Исправлено: Lin1980, 22:13 27-01-2025
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Короче, похоже на состояние гонки между pytest и loguru в stdout.
Лечится добавлением к pytest -s (--capture=no) опции -q (--quiet)
 
Но лечится не до конца, особенно в pycharm - но и в обычном терминале тоже, бывает, остаётся хвост бардака.
 
Ещё, в pycharm неотключаем вердикт PASSED после каждого теста.  
Если теста было три, вердикт выглядит так: PASSEDPASSEDPASSED.
 

Всего записей: 17833 | Зарегистр. 14-10-2001 | Отправлено: 15:00 16-04-2024
bugirkut

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день. Подскажите ответ на такой вопрос: Есть скрипт на питоне, сконвертированный в .ехе файл, можно его перевести обратно в .ру чтоб посмотреть код и поправить его?

Всего записей: 52 | Зарегистр. 24-05-2013 | Отправлено: 03:07 18-04-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bugirkut
https://gist.github.com/mate-h/fc8f21bd3ce9e3ad1737b85f795bab07
https://www.fortinet.com/blog/threat-research/unpacking-python-executables-windows-linux
смотря чем преобразовано. может быть относительно просто, а может быть обфусцировано.

Всего записей: 15885 | Зарегистр. 20-09-2014 | Отправлено: 04:22 18-04-2024 | Исправлено: Mavrikii, 04:25 18-04-2024
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Жопота, однако, пишет годный код:
https://chat.openai.com/share/98453c60-cb92-48a9-a8be-f33a072e529c
 
Но тут важно правильно сформулировать вопрос: прежде чем выдать эти чеканные формулировки, я затрахал гугловскую и майковскую AI-шечки в попытках научиться объяснять свою хотелку. То есть, сейчас я начал разговор "с чистого листа" на новом месте.  
 
Все что возможно неправильно понять, будет понято неправильно (иллюстрация тому налицо: с первым вопросом ровно так и вышло).
 
 
Добавлено:
 
Сдаётся мне, что гуглобард джемини кодит не хуже GPT 3.5 - но они оба с майковским копилотом думают дольше и работают гораздо медленней его.
 
 
Добавлено:
 
Хотя, вот именно сейчас он сплоховал (спрашиваю то же, что спрашивал у openai-шной жопоты)
https://gemini.google.com/app/19762d3d10058068
 
Копилот в Еже на те же вопросы наболтал прикольнее, выдумал новую логику и годное имя функции (но поделиться чатом с ним, кажется, нельзя). Вот:
 
def sanitize_dict(d):
    sanitized = {}
    for k, v in d.items():
        if isinstance(v, dict):
            sanitized[k] = sanitize_dict(v)
        elif callable(v):
            sanitized[k] = "<callable>"
        else:
            sanitized[k] = v
    return sanitized
 
def test_nested_dict():
    nested_dict = construct_nested_dict()
    target_dict = {}  # replace with your target dictionary
 
    assert sanitize_dict(nested_dict) == sanitize_dict(target_dict)


Всего записей: 17833 | Зарегистр. 14-10-2001 | Отправлено: 18:12 21-04-2024 | Исправлено: LevT, 18:55 21-04-2024
MBK2

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Он годный код пишет, если найдет максимально близкий пример в интернете.
Так, проще и надежнее самому нагуглить при знании синтаксиса и умении правильно формулировать ТЗ.
То есть, при этих исходных пользы от такой помощи все равно ноль

Всего записей: 5152 | Зарегистр. 18-09-2018 | Отправлено: 18:56 21-04-2024
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MBK2
 
"можно самому нагуглить". А можно и не нагуглить. А можно убить кучу времени, продираясь через нерелевантную выдачу поисковиков, с негарантированным результатом.
 
Все три жопоты отвечают сразу - но всё то, что в задании можно неправильно понять, будет ими понято неправильно. Так что, с ними ещё и учишься формулировать хотелки.
 
Но! Надо уметь их ответами воспользоваться: оценить, что именно нерелевантно, переформулировать вопрос, руками поправить в ответе то, что поправимо...
 
 
Добавлено:
 
Хотя да, жопотоболталки тупят ответить на сверхсложные вопросы, ответы на которые реально невозможно нагуглить.
 
Я уже с таким сталкивался (не только в области кодинга), что они зацикливаются на одном и том же ответе, с которого их невозможно сбить уточнениями вопроса.
 
 
 
Добавлено:
 
Итак, продолжаю долбаться с копилотом и добавляю хотелку:
 
1) Reduce the sanitized dictionary items to the list of sanitized items' keys.
 
Ответ некрасиво выглядит и свидетельствует, что меня не очень поняли
 
 
2) Add the set of collected keys of the sanitized (callable-valued) dictionary items as a new dictionary item value at each nesting level:
 
def sanitize_dict(d):
    sanitized = {}
    keys = []
    for k, v in d.items():
        keys.append(k)
        if isinstance(v, dict):
            sanitized[k] = sanitize_dict(v)
        elif callable(v):
            sanitized[k] = "<callable>"
        else:
            sanitized[k] = v
    sanitized['collected_keys'] = set(keys)
    return sanitized
 
def test_nested_dict():
    nested_dict = construct_nested_dict()
    sanitized = sanitize_dict(nested_dict)
    print(sanitized)  # or do something with the sanitized dictionary

 
 
Добавлено:
 
3) rewrite sanitize_dict function using FP-styled 'fold'
 
Sure, in functional programming, ‘fold’ is a concept that is used to reduce a data structure to a single value. In Python, the functools.reduce function provides similar functionality. Here’s how you might rewrite the sanitize_dict function using functools.reduce:
 
 

from functools import reduce
 
def sanitize_dict(d):
    def sanitize_item(acc, item):
        k, v = item
        if isinstance(v, dict):
            acc[k] = sanitize_dict(v)
        elif callable(v):
            acc[k] = "<callable>"
        else:
            acc[k] = v
        return acc
 
    sanitized = reduce(sanitize_item, d.items(), {})
    sanitized['collected_keys'] = set(d.keys())
    return sanitized
 
def test_nested_dict():
    nested_dict = construct_nested_dict()
    sanitized = sanitize_dict(nested_dict)
    print(sanitized)  # or do something with the sanitized dictionary

 
Добавлено:
 
Дальше я его попросил заюзать ещё и Y комбинатор - но код улучшению не поддаётся, он само совершенство. Тот самый fixed point достигнут.
 
Мозги я практически не включал, только знание терминологии и настойчивость в формулировке своих хотелок.

Всего записей: 17833 | Зарегистр. 14-10-2001 | Отправлено: 19:01 21-04-2024 | Исправлено: LevT, 20:59 21-04-2024
MBK2

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мне немного лень вникать в логику вашей хотелки, но простой запрос по гуглу ее формулировки курсивом дает массу ссылок с готовым гарантированно рабочим кодом примеров.
В то время, как на ботовский код надежды практически никакой, надо перепроверять, ибо хитрит, делает настолько правдоподобный код, что ловить в нем баги даже сложнее чем в собственном.

Всего записей: 5152 | Зарегистр. 18-09-2018 | Отправлено: 21:05 21-04-2024
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MBK2
 
Запустил и проверил ))
 
Я бы не сказал, что он хитрит. Он не телепат, понимает буквально то что дурно сформулировано - и выдаёт какое-то уродство.
 

Цитата:
Ответ некрасиво выглядит и свидетельствует, что меня не очень поняли

(самоцитата)
 
 
Нужен опыт, чтобы сразу отправить в помойку корявую простынку, которая не может быть решением красивой задачи - для которого искомый алгоритм должен быть столь же красив.
 

Цитата:
Но тут важно правильно сформулировать вопрос: прежде чем выдать эти чеканные формулировки, я затрахал гугловскую и майковскую AI-шечки в попытках научиться объяснять свою хотелку. То есть, сейчас я начал разговор "с чистого листа" на новом месте.  

(самоцитата)

Всего записей: 17833 | Зарегистр. 14-10-2001 | Отправлено: 22:09 21-04-2024 | Исправлено: LevT, 00:11 22-04-2024
MBK2

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT

Цитата:
 
Нужен опыт, чтобы сразу отправить в помойку корявую простынку

В том то и дело, что бот выдает небинарный результат (правильно/дичь), он может запилить с виду годный вариант, но с каком то критичном месте вставить несуществующий (взятый из другой библиотеки/языка/вообще выдуманный) класс.
Для того, чтобы найти такой косяк нужно хорошо быть в теме, но в этом случае гораздо проще самому придумать или нагуглить правильный фрагмент кода.
Вы же согласны с тем, что всегда проще свой код с нуля написать, чем ловить баги в чужом?

Всего записей: 5152 | Зарегистр. 18-09-2018 | Отправлено: 08:15 22-04-2024
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MBK2

Цитата:
(взятый из другой библиотеки/языка/вообще выдуманный класс)

 
Кстати да, встречал недавно такое: какой-то из AI-балаболов выдумал несуществующую опцию форматирования для loguru.logger
 
Но мы же не двоечники которым нужно где-то списать решение завтрашней контрольной.  
Запустили, посмотрели ошибки. Или сразу увидели красноту в IDE.
 
Если и не удалось использовать подсказку буквально - от неё всё же возможна польза,
  если задуматься, почему бот нагаллюцинировал здесь вот именно вот это, а не что-то иное.  
 
 
Добавлено:
 
Но вот в чём я вижу неоценимую пользу этих ботов - это прекращение нужды заучивать - притом, до автоматизма заучивать - базовый синтаксис и базовые конструкции ЯП, типа трансформации одного словаря (или хэшмапа?) в другой.  
 
items в этом языке - или entries? fold или reduce? Как здесь паттернмэтчат / пишут длинный if/else ?  
Бот подскажет и даже сам напишет этот бойлерплейт, а наше дело работа интеллектуальная: гнуть свой интерес выходить на нужную нам семантику: Или доделать руками, если предложение бота близко к желаемому (в ту меру, в какой наша оценка заслуживает доверия). Или попросить бота для начала отрефакторить его в нужную нам сторону.  
 
Вы же согласны, что такого объёма конструкции легче читать, чем писать руками? Притом - в отличие от написания - для чтения не надо даже ЯП знать: достаточно общего о нём представления.
 
 
Добавлено:

Цитата:
Вы же согласны с тем, что всегда проще свой код с нуля написать, чем ловить баги в чужом?

 
А если под рукою автор этого чужого кода - притом, в качестве бесплатного раба, к тому же усердного и реально доброжелательного раба (пускай и с галлюцинациями)? Притом, раб этот учёный: понимает специальную терминологию, которой мы долго и с усилием овладевали - и не прочь увидеть, как эти вложения, наконец-то, приносят нам пассивный доход.

Всего записей: 17833 | Зарегистр. 14-10-2001 | Отправлено: 13:39 22-04-2024 | Исправлено: LevT, 22:03 22-04-2024
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Вон оно, оказывается, что в природе есть
https://www.blackbox.ai/chat/expert-python
 
терзать сегодня уже не буду, устал

Всего записей: 17833 | Зарегистр. 14-10-2001 | Отправлено: 20:42 22-04-2024
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Отбой покамест.  
 
  Потыкал всё-таки его палочкой: кажется, оно ещё хуже каждой из трёх вышепоминавшихся ББ (больших болталок).

Всего записей: 17833 | Зарегистр. 14-10-2001 | Отправлено: 00:51 23-04-2024
MBK2

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT

Цитата:
А если под рукою автор этого чужого кода - притом, в качестве бесплатного раба, к тому же усердного и реально доброжелательного раба (пускай и с галлюцинациями)? Притом, раб этот учёный: понимает специальную терминологию, которой мы долго и с усилием овладевали - и не прочь увидеть, как эти вложения, наконец-то, приносят нам пассивный доход.

Немного не так. Раб безумный, ваш язык понимает слегка, специальную терминологию понимает весьма специфически, а самое главное - логику построения своей программы обьяснить вам не может.

Всего записей: 5152 | Зарегистр. 18-09-2018 | Отправлено: 07:21 23-04-2024
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MBK2
 
Боюсь, что вы то ли исходите из предрассудков, то ли обобщаете печальный опыт. Но опыт дело поправимое: если бы я не поиграл уже с ботами поумнее, я бы вчера тоже разочаровался от blackbox.ai
 
Кроме того, все сейчас торопятся выложить недоделанные полуфабрикаты (как вообще со стартапами дело обстоит). Допускаю, тот же blackbox.ai через несколько месяцев всех порвёт - и, возможно, продастся старшим. Допускаю и то, что его так и не допилят до состояния, когда его преимущества станут наглядными для кого-то, кроме его создателей.
 
 

Цитата:
специальную терминологию понимает весьма специфически,

 
Не бьло бы у меня опыта с более продвинутыми поделиями, я бы тоже сделал этот вывод.
 
Этот вчерашний blackbox.ai не понимает python dictionary literal когда я заказываю покрутить код как данные в виде текста, и тупейшим образом сводит ответ к манипулированию кусками json.
 
 

Цитата:
 а самое главное - логику построения своей программы обьяснить вам не может.

 
Может так и было год назад, но сейчас всё поменялость. Есть даже пункт меню: Explain (этот посторонний код).  
 
Объяснениями боты сопровождают и любой сгенерированный ими код - но их я как раз считаю ненужным балабольством и рад был бы их отключить, возможно раз и навсегда. Хотя для двоечников студентов эти объяснения именно "то, что доктор прописал". Возможно, что им были бы рады, наоборот, заказчики-алгоритмисты.
 
 
Уже лет пять назад писали, что какой-то фармацевтический AI, изобретая перебором молекулы, ненароком нагенерил пачку новых смертоносных ядов. Таких, что экспериментаторы испуганно заткнули этот фонтан (ага, так я и поверил).

Всего записей: 17833 | Зарегистр. 14-10-2001 | Отправлено: 10:05 23-04-2024 | Исправлено: LevT, 12:22 23-04-2024
MBK2

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Ну пока что ваши результаты не сильно впечатляют - вы привели в пример, фактически, маленькие фрагменты кода из учебников, а не готовое решение целиком.
Да, в голове держать такой пример не надо, но нагуглить учебник все ж правильнее, чем довериться такому сомнительному источнику, как бот.

Цитата:
Объяснениями боты сопровождают и любой сгенерированный ими код - но их я как раз считаю ненужным балабольством и рад был бы их отключить, возможно раз и навсегда.  

Ну там обьяснения уровня "почему у лошади 8 ног"

Всего записей: 5152 | Зарегистр. 18-09-2018 | Отправлено: 10:53 23-04-2024
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MBK2
 
А мне и не нужно от бота "решение целиком", мне нужен фрагмент чтобы не вспоминать синтаксис. Книжки я, разумеется, листал - но не собираюсь никуда наниматься кодером, чтобы писать такие фрагменты из головы.  
 
И зачем в них вновь лезть, если доступен раб который подскажет? У меня достаточно ума, чтобы отвергнуть заведомую лажу, и опыта, чтобы отловить в IDE лажу менее заметную. И вкуса, чтобы не удовлетворяться всякими спагетти.
 
 

Цитата:
Ну там обьяснения уровня "почему у лошади 8 ног"

 
Нет, там объяснения как раз для ленивого студента. Мне не надо объяснять, что вот здесь цикл, вот здесь switch или паттерн match, и на что указывают ссылки (в студенческой терминологии переменные).
 
А хочу я наоборот странного (мне неинтересен синтаксис от слова совсем и неинтересны названия библиотечных методов, которые содержательно одинаковы во всех программных системах) - и тут бот отлично помогает. Я его попросил генерацию агрегата "переписать с fold" - и тот мне мне мало что подсказал, что в питончике (аналогично ruby, js и подобной наивной динамической ереси) тот называется reduce, но и выдал его вызов, подходящий в контексте.
 
Вот это я не стану даже читать, потому что ничего нового для меня там заведомо нет, а если я захочу эту примитивную семантику выразить жабаскриптом, я моментально найду как это делается.  
И опять попрошу бота написать - потому синтаксис жс мне столь же неинтересен, как питонячий.

Всего записей: 17833 | Зарегистр. 14-10-2001 | Отправлено: 12:07 23-04-2024 | Исправлено: LevT, 12:49 23-04-2024
MBK2

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Я прекрасно понял, что именно вам было нужно, я сам не сильно большой питонист и не напишу вам этот фрагмент по памяти без гугла. А вот вы,судя по всему, совершенно не понимаете, что я до вас донести хочу. А я вам пытаюсь показать, что ваш восторг перед новыми технологиями совершенно лишний и вообще правильность подобного подхода сильно спорна. Ну вот смотрите первая ссылка по гуглу на вашу хотелку дает гораздо более конструктивный ответ безо всякой нейросети, которая, вдобавок, вносит элемент неустойчивости.

Всего записей: 5152 | Зарегистр. 18-09-2018 | Отправлено: 13:51 23-04-2024
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MBK2
 
На самом деле мне была и остаётся любопытной некая книжка "Software Design by Example" (просто так случилось, что там юзается питон; где-то рядом первое издание на js).
 
Я застрял уже на первой главе, где руками из словарей собираются потроха OOP. Ещё, я люблю комфорт и TDD, потому убил кучу времени на укрощение loguru и pytest и вообще на узнавание, "что там у питонцев". Обошёлся бы без логов, но увы никак, потому что хочу руками порулить множественное наследование и притом поглубже, чем предлагется в книжке.
 
А для тестов на правильность сборки кустисто вложенных словарей, чуть менее чем полностью состоящих из функций, надо функции отфильтровывать - потому что мешаются их адреса, смысла не имеющие.
 
А для того, чтобы не страдать эстетически, глядя на хаос из красных ошибок - мне нужно ту же проблему решить со строковым представлением этих словарей. Также, мне доставляют эстетические страдания самописные циклы - и я их искореняю везде где вижу (вот затем мне свёртки и под).
 
В перечисленном мне серьёзно помогли AI-болталки, подкинув несколько правильных идей - в чём я убеждаюсь, глядя на наконец-то удобные логи. Возможно, это случайность.. но кажется, сам бы я до такого не додумался - в силу того что толком не знаю ни питон, ни устройство ООП: с проблемами знакомлюсь, видя работу уже собранной машинки.
 
 
ЗЫ. Кстати, в реактивные мозги 2024.1 встроен локальный ИИ, который недурно дописывает строчки и целые блоки бойлеплейта.  
(не исключаю, что радуюсь сейчас не ему, а одному из взаимно исключающих плагинов с этой возможностью).
 
Оно работает, без впн, смс и регистраций.

Всего записей: 17833 | Зарегистр. 14-10-2001 | Отправлено: 16:11 23-04-2024 | Исправлено: LevT, 16:35 23-04-2024
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

  https://habr.com/ru/companies/bothub/articles/809421/#comment_26753003
 
мои ощущения один в один

Всего записей: 17833 | Зарегистр. 14-10-2001 | Отправлено: 19:01 23-04-2024
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всё-таки не стоит спорить о вкусе устриц, пока сами не попробуете без предрассудков.
Чатботы экономят кучу времени и даже помогают исправить собственные косяки.
 
Например не закомитил рабочий вариант и что-то сломал (перенёс в другие файлы куски, поменял импорты, полез править самый абстрактный движок, не осилил, передумал, попытался вернуть взад...) В результате работает, но слегка не так, и хочется вернуть "как было". Час протрахался с local history - только время потерял: сломал-то я проект, а не один файл.
 
 
Попросил бота починить, потрудившись сформулировать "как оно было хорошо" - и тот волшебным образом выплёвывает рабочий код одной простынкой. (Выше в контексте открытого диалога желаемое состояние обсуждалось, но вперемежку с чем-то нерелевантным. Полагаю, что-то полезное, что я из головы уже выкинул, бот продолжал помнить своей железной башкой.)
 
Бот - виндовый копилот, ещё сегодня CodeGeeX потыкиваю, этот тоже неплох.
 
 
Добавлено:
 
Впрочем, всё это лишнее - для тех аксакалов, кому не влом в голове держать виртуальную "историю комитов", и переизобретать сломанное, вытаскивая мотивацию для каждого изменения.
 
Не говорю о титанах духа, которые никогда ничего не ломают и потому тоже счастливы без контроля версий. Я не отношусь ни к тем, ни к другим.

Всего записей: 17833 | Зарегистр. 14-10-2001 | Отправлено: 17:01 24-04-2024 | Исправлено: LevT, 22:07 24-04-2024
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Python


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru