Ну, в коде используется функция Python eval
. Эта возможность есть во многих языках: eval
, сокращение от «оценивать», берет фрагмент текста и выполняет его так, как если бы он был частью программы, а не просто частью данных, передаваемых в программу. Эта строка:
s = input().split()
читает строку ввода от пользователя и разбивает ее на слова на основе пробела, поэтому, если вы введете «insert 1 2», s
будет установлен в список ["insert","1","2"]
. Затем он преобразуется следующими строками в "insert(1,2)"
, который затем добавляется к "slist."
и передается в eval
, что приводит к выполнению вызова метода slist.insert(1,2)
. Таким образом, в основном этот код использует тот факт, что в Python уже есть методы для выполнения требуемых функций, которые даже имеют те же имена, которые используются в задаче. Все, что нужно сделать, это взять имя и аргументы из строки ввода и преобразовать их в синтаксис Python. (Опция print
имеет специальный регистр, поскольку нет метода slist.print()
; для этого случая используется глобальная команда: print slist
.)
В реальном коде вы почти никогда не должны использовать eval
; это очень опасная функция, поскольку она позволяет пользователям вашего приложения потенциально запускать любой код, который они хотят. Это, безусловно, одна из самых простых возможностей для взлома хакерами.