GPCracker 2,088 #288765 Posted August 26, 2015 (edited) Возможно я где-то накосячил, но assert True is True, 'Error!!!'Компилится питоном 2.7.10 в raise True is True or AssertionError('Error!!!')Это выдается при декомпиляции. Что и объясняет ошибку. TypeError: exceptions must be old-style classes or derived from BaseException, not boolОт такого кода крашится даже сам 2.7.10, сгенерировавший код... Edited August 26, 2015 by GPCracker Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #288767 Posted August 26, 2015 (edited) Это выдается при декомпиляции. Что и объясняет ошибку. Код питона - правильный, так как ты сам его проверил Байткод - тоже правильный, так как компилятор не может ошибиться с интепретацией питон-скрипта А вот декомпилятор - может выдать что угодно Гы ))))) Он же не абсолютный ревёрсер. Uncompyle2 raise True is True or AssertionError('Error!!!') Decompyle++ if not True is True: raise AssertionError('Error!!!') Fupy if True is True: return else: raise AssertionError('Error!!!') Edited August 26, 2015 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #288769 Posted August 26, 2015 Код питона - правильный, так как ты сам его проверил Байткод - тоже правильный, так как компилятор не может ошибиться с интепретацией питон-скрипта А вот декомпилятор - может выдать что угодно Гы ))))) Он же не абсолютный ревёрсер.Блин я тоже нихрена не могу понять... Только что пересобрал этот скрипт - все норм. В клиенте тоже. На основе 9.9. А собранный мною мод (автоскриптом) на тесте 9.10 у товарища выбрасывает TypeError: exceptions must be old-style classes or derived from BaseException, not boolВ чем прикол - хз. Единственное, что приходит в голову - что мод прогоняли через этот самый uncompile ориона и обратно, вопрос только зачем... Ладно, там по сути уже поправили косяк, но @StranikS_Scan, декомпилятор uncompile кастомный (всмысле правленный)? Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #288771 Posted August 26, 2015 (edited) StranikS_Scan, декомпилятор uncompile кастомный (всмысле правленный)? Эээ, он правленый с момент своего создания, правился, правится и будет правиться. В связи с чем я не понял что ты имел ввиду? Единственное, что приходит в голову - что мод прогоняли через этот самый uncompile ориона и обратно, вопрос только зачем... Будешь делать впопен-сурс моды еще и ни такое увидишь )))))) Edited August 26, 2015 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites
MakcT40 331 #288776 Posted August 26, 2015 Возможно я где-то накосячил, но assert True is True, 'Error!!!'Компилится питоном 2.7.10 в raise True is True or AssertionError('Error!!!') У меня декомпилируется в оригинал. Quote Share this post Link to post Short link Share on other sites
fecell 125 #288803 Posted August 27, 2015 (edited) Возможно я где-то накосячил, но assert True is True, 'Error!!!'Компилится питоном 2.7.10 в а по хорошему это компилится в pass 1 0 LOAD_CONST 0 (None) 3 RETURN_VALUE если использовать опции оптимизации при вызове компилятора. cp27.cmd @echo off set PYTHON=C:\Python27 set PYTHONHOME=%PYTHON% set PATH=%PATH%;%PYTHON% set LIB=%LIB%;%PYTHON%\Lib echo %1c if exist %1c del %1c %PYTHON%\python.exe -OO -c "import py_compile;py_compile.compile('%1')" ren %1o %1c Edited August 27, 2015 by fecell Quote Share this post Link to post Short link Share on other sites
Montec 0 #288901 Posted August 28, 2015 Здравствуйте! Не удаеться компилировать файл, получаю следующее:Error decompiling file 'D:\World_of_Tanks\res_mods\0.9.9\scripts\client\mods\modpack.pyc' (Error: array indices must be integers)Что означает эта ошибка.И что означает содержимое другого файла после преобразования:# Embedded file name: __init__.pypassСпасибо за помощь! Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #288902 Posted August 28, 2015 Здравствуйте! Не удаеться компилировать файл, получаю следующее:Error decompiling file 'D:\World_of_Tanks\res_mods\0.9.9\scripts\client\mods\modpack.pyc' (Error: array indices must be integers)Что означает эта ошибка. Декомпилировать*Это значит, что скрипт защищён и просто так вы его не разберёте. 1 Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #288903 Posted August 28, 2015 (edited) Не удаеться компилировать файл Скомпилировать - значит превратить код, написанный на скриптовом языке в байт-код из инструкций. А вы судя по надписям - Декомпилируете, т.е. проводите обратную операцию. Error decompiling file 'D:\World_of_Tanks\res_mods\0.9.9\scripts\client\mods\modpack.pyc' (Error: array indices must be integers)Что означает эта ошибка. Не удается потому что байт-код обфусцирован, т.е. защищен от декомпиляции. И что означает содержимое другого файла после преобразования: # Embedded file name: __init__.py pass pass - означает ничего, т.е. в файле нет ни какого исполняемого кода. ЗЫ: Почитайте какой-нибудь букварь по питону для чайников, там обычно азы все расписаны Edited August 28, 2015 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #288913 Posted August 28, 2015 pass pass - означает ничего, т.е. в файле нет ни какого исполняемого кода. Вот официальная документация. Переводя дословно, это операция, при выполнении которой не происходит ничего. Используется там, где синтаксически нужен код, а его (пока) нет. Документации вагон, гуглится без проблем, а вопросы почему-то задают. Не понимаю, зачем декомпилировать код, если в питоне для автора вопроса ничего не понятно. Тем более без знания хотя бы одного языка программирования на "хорошо", иначе вопроса бы не возникло))) Файл __init__.py по сути является главным файлом пакета, именно его наличие определяет папку со скриптами как пакет (package). Зачастую кода в нем не бывает. На русском качественной и подробной документации мне пока не попадалось. ЗЫ: Почитайте какой-нибудь букварь по питону для чайников, там обычно азы все расписаныДа, начинать разбираться в питоне лучше с букваря, а не с "Войны и мира". Тем более, что 80-90% модов сами по себе качеством и понятностью кода не отличаются. Даже у "бывалых" иногда возникает вопрос "под чем это писали" и "как оно работает". 2 Quote Share this post Link to post Short link Share on other sites
IzeBerg 128 #288914 Posted August 28, 2015 (edited) Даже у "бывалых" иногда возникает вопрос "под чем это писали" и "как оно работает". У всех и всегда такое. Я не видел еще ни одного человека, который лез бы в свой код через 1-2 недели и не матерился на тему "Что я, ***, тут делал?" Edited August 28, 2015 by IzeBerg Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #288916 Posted August 28, 2015 У всех и всегда такое. Я не видел еще ни одного человека, который лез бы в свой код через 1-2 недели и не матерился на тему "Что я, ***, тут делал?" Комментарии писать и единый стиль юзать, не? 2 Quote Share this post Link to post Short link Share on other sites
IzeBerg 128 #288926 Posted August 28, 2015 Комментарии писать и единый стиль юзать, не? "Для слабаков!11" Даже если все комментариями обмазывать - всегда останется "тёмный уголок" без комментария. Quote Share this post Link to post Short link Share on other sites
Polar Fox 16 #288929 Posted August 28, 2015 "Для слабаков!11" Даже если все комментариями обмазывать - всегда останется "тёмный уголок" без комментария. Нужно в комментариях не графоманить, а писать самую суть. Тогда будет гораздо проще. Несмотря на то, что это кажется простым, это не так. Но с опытом всё приходит, как правило. 1 Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #288933 Posted August 28, 2015 У всех и всегда такое. Я не видел еще ни одного человека, который лез бы в свой код через 1-2 недели и не матерился на тему "Что я, ***, тут делал?" Комментарии писать и единый стиль юзать, не?Комментарии и единообразие стиля написания кода вещи, конечно, очень важные, но гораздо важнее просто грамотно писать код, т.е. не писать все одним блоком, а использовать функции, классы, наследование и т.д. там, где оно реально нужно. И имена переменным давать нормальные и понятные. Тем более что в питоне, например, длина имени переменной на производительность никак не влияет, только на размер байт-кода, в нем имя переменной присутствует только один раз, и нужно только для отладки. Когда читая строку / блок кода даже вне контекста, ты понимаешь, что это и для чего оно нужно, подобных проблем не возникает. Гораздо проще и дешевле будет сразу грамотно написать, зато потом будет меньше проблем с фиксами и интеграцией новых фич. В идеале фича должна интегрироваться в 1 строчку (не считая кода самой фичи). Как и фикс в большинстве случаев (речь идет об багах, а не об оптимизации под творения картошки). Нужно в комментариях не графоманить, а писать самую суть. Тогда будет гораздо проще. Несмотря на то, что это кажется простым, это не так. Но с опытом всё приходит, как правило.Согласен на 100%. Хотя зачастую самым лучшим комментарием будут правильно названные переменные. Но с опытом всё приходит, как правило.Порой открываешь какой-нибудь старый проект и думаешь, почему он так хреново написан... Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #288939 Posted August 28, 2015 (edited) Согласен на 100%. Хотя зачастую самым лучшим комментарием будут правильно названные переменные. Ты видать не кодил на питоне парсеры, регулярки и интепретаторы всякие - из-за обилия функциональных возможностей питона, код часто становится мысленно не разбираемым даже... с комментариями. А без них - вообще труба будет. Edited August 28, 2015 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #288941 Posted August 28, 2015 Ты видать не кодил на питоне парсеры, регулярки и интепретаторы всякие - из-за обилия функциональных возможностей питона, код часто становится мысленно не разбираемым даже... с комментариями. А без них - вообще труба будет.Это одно из немногочисленных исключений, где без комментариев нельзя обойтись. Есть вещи, которые нужно для понятности написать в таком виде, в котором это сделать синтаксически неприемлемо. Те же регулярные выражения. Однако можно разбить его на части, определить объединение как вычисляемое при компиляции, или просто выполнить сложение в единое в начале однократно (в зависимости от возможностей конкретного языка), при этом прокомментировав каждую часть. Тем более, что в питоне есть возможность оптимизации кода, которая наверняка (не копал особо, могу ошибаться) фиксит однократно используемые переменные и тому подобные вещи. Quote Share this post Link to post Short link Share on other sites
Polar Fox 16 #288943 Posted August 28, 2015 (edited) Порой открываешь какой-нибудь старый проект и думаешь, почему он так хреново написан... Потому что свой? Это вообще отдельная тема. Можно на экспорт (в командной работе, на продажу, имиджевый опенсорс, и т.д.) писать годный код, с которым без проблем будут работать другие люди. А для себя "и так сойдет", т.е. фактически идет основной упор на чтобы работало, а не чтобы понятно было кому-то ещё. Edited August 28, 2015 by Polar Fox Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #288946 Posted August 28, 2015 (edited) Потому что свой? Это вообще отдельная тема. Можно на экспорт (в командной работе, на продажу, имиджевый опенсорс, и т.д.) писать годный код, с которым без проблем будут работать другие люди. А для себя "и так сойдет", т.е. фактически идет основной упор на чтобы работало, а не чтобы понятно было. Известный эффект. Все люди делятся на две категории, те кто доносят мусор до урны и те, кто не доносят. Также и в программировании. Либо ты всегда делаешь годный код, либо ты притворяешься, когда смотрят, и кодишь ногами, когда ни кто не видит или не проверят. Это называется отношение. Edited August 28, 2015 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites
Polar Fox 16 #288947 Posted August 28, 2015 (edited) Известный эффект. Все люди делятся на две категории, те кто доносят мусор до урны и те, кто не доносят. Также и в программировании. Либо ты всегда делаешь годный код, либо ты притворяешься, когда смотрят, и кодишь ногами, когда ни кто не видит или не проверят. Это называется отношение. Я написал коряво, а поправить сразу не смог, из-за чего весь смысл предложения переместился вообще в другую плоскость. а не чтобы понятно было кому-то ещё. Edited August 28, 2015 by Polar Fox Quote Share this post Link to post Short link Share on other sites