Не используйте какое-либо ключевое слово или аргумент в качестве ввода или скобки для вашей функции. Это очень простое решение:)
Ваше пространство задач является underspecified. Это для приложения командной строки? Этот код, как предполагается, используется как библиотека?
В дополнение к двум другим ответам, Вы могли встроить код в двоичный файл. Когда это запустится, декодируйте код и оценку строка. Это работает на общее расширение библиотеки также. Вы могли также сделать это с кодом байта, я думаю, но это не было бы столь же просто как называющий Py_EvalCode.
py2exe или замораживание являются другим решением, которые преобразовывают код в исполняемый файл. Это просто включает код в двоичный файл и не делает никакого вида серьезного obsfucation, но это еще более твердо, чем открытие .py файла.
Вы могли написать код в Cython, который подобен Python и пишет файлы расширения Python в C для использования в качестве .so. Это является, возможно, самым твердым из них перепроектировать и все еще дать Вам высокоуровневый язык для develoment.
Они все hackable, как все решения. Как трудно Вам хотят, чтобы это было?
Во многих ситуациях можно поставить скомпилированные в байт .pyc файлы вместо .py исходных файлов. Это дает Вам некоторый уровень путаницы. Как pyobfuscate README предполагает, это имеет ограничения. Но Вы можете комбинировать два подхода.