Как объяснил Микола, фактический результат, который вы наблюдаете, вызван тем фактом, что удаление записи из списка смещает весь список на одно место, заставляя вас пропускать элементы.
Но более интересный вопрос , на мой взгляд, почему python не выбирает для создания сообщения об ошибке, когда это происходит. Он вызывает такое сообщение об ошибке, если вы попытаетесь изменить словарь. Я думаю, для этого есть две причины.
Для части Python Вы могли бы рассмотреть использование Pyinstaller с подходящими вариантами, это может упаковать Ваше целое приложение Python в единственном исполняемом файле, который не потребует, чтобы установка Python была выполнена конечными пользователями. Это эффективно выполняет интерпретатор Python на упакованном коде, но это имеет опцию шифра, которая позволяет Вам шифровать байт-код.
Да, ключ будет где-нибудь вокруг исполняемого файла, и у очень опытного костюмера могли бы быть средства извлечь его, таким образом распутывая не так читаемый код. Вам решать, чтобы знать, содержит ли Ваш код некоторый большой секрет, необходимо скрыться любой ценой. Я, вероятно, не сделал бы этого, если бы я хотел взимать большие деньги за какое-либо решение ошибки в развернутом продукте. Я мог использовать его, если клиент имеет хорошие стандарты соответствия и не является потенциальным конкурентом, ни, как ожидают, заплатит за большее количество лицензий.
, В то время как я сделал это однажды, я честно постарался бы не делать его снова.
Относительно кода C, если можно скомпилировать его в исполняемые файлы и/или совместно использованные библиотеки, может быть включен в исполняемый файл, сгенерированный Pyinstaller.