eval() locals(), locals, f- .
def fstr(fstring_text, locals, globals=None):
"""
Dynamically evaluate the provided fstring_text
"""
locals = locals or {}
globals = globals or {}
ret_val = eval(f'f"{fstring_text}"', locals, globals)
return ret_val
:
format_str = "{i}*{i}={i*i}"
i = 2
fstr(format_str, locals())
i = 4
fstr(format_str, locals())
fstr(format_str, {"i": 12})