Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с Python!

Wqwqw Wqefhgiff Мастер (1242), на голосовании 2 месяца назад
 functions = {} 
vars = {}

def define_function(name, body):
functions[name] = body

def call_function(name, *arguments):
if name in functions:
return functions[name](*arguments)
else:
print(f"Error: Function '{name}' is not defined")

def interpret(code):
lines = code.strip().splitlines()
for line in lines:
parts = line.split("(")
func_name = parts[0].strip()
args_str = parts[1].strip(")").strip() if len(parts) > 1 else ""
args = [arg.strip() for arg in args_str.split(",")] if args_str else []
call_function(func_name, *args)

def include_lib(lib):
path = f'libs/{lib}.fpy'
with open(path) as lib_file:
content = lib_file.read()
exec(content)

define_function('print_var', lambda a: print(vars.get(a)))
define_function('print', lambda a: print(a))
define_function('set_int', lambda a, b: vars.update({a: int(b)}))
define_function('set_str', lambda a, b: vars.update({a: b}))
define_function('set_float', lambda a, b: vars.update({a: float(b)}))
define_function('set_bool', lambda a, b: vars.update({a: bool(b)}))
define_function('lib', lambda a: include_lib(a))
#define_function('get', lambda a: return vars[a])

while True:
code = input(' >>> ')
if code == 'exit':
exit()
interpret(code)
Добавьте чтобы можно было создать функцию которая возвращает значение
 set_int(num,52)
print(get(num))
то есть можно было использовать в качестве аргументов функции другую функцию, которые возвращают значение
Голосование за лучший ответ
Barbaris Профи (835) 3 месяца назад
Разве не нужно вызывать через call_function.

Получается как-то так:
call_function("set_int", "название переменной", 52)
call_function("print_var", "название переменной")

И что вообще за стиль написания, нигде такого не видел, хотя при этом выглядит интересно
Wqwqw WqefhgiffМастер (1242) 3 месяца назад
да нет, при вводе. Блин, как объяснить. Это интерактивный режим для моего языка.
Barbaris Профи (835) Wqwqw Wqefhgiff, А, увидел, я не обратил внимание, тогда классно придумано. Ну насчёт одной функции внутри другой сложно, извиняюсь, не могу помочь, там нужен по идее стек вызовов, чтобы если внутри функции вызов другой функции, сначала вызвать её
Похожие вопросы