Arcadiy Ivanov <arca...@ivanov.biz> added the comment: As an example this is the current state of affairs:
>>> def x(): ... foo = "foo" ... s1 = f"S1 value {foo}" ... s2 = f"S2 value {s1}" ... print(s2) ... >>> dis.dis(x) 2 0 LOAD_CONST 1 ('foo') 2 STORE_FAST 0 (foo) 3 4 LOAD_CONST 2 ('S1 value ') 6 LOAD_FAST 0 (foo) 8 FORMAT_VALUE 0 10 BUILD_STRING 2 12 STORE_FAST 1 (s1) 4 14 LOAD_CONST 3 ('S2 value ') 16 LOAD_FAST 1 (s1) 18 FORMAT_VALUE 0 20 BUILD_STRING 2 22 STORE_FAST 2 (s2) 5 24 LOAD_GLOBAL 0 (print) 26 LOAD_FAST 2 (s2) 28 CALL_FUNCTION 1 30 POP_TOP 32 LOAD_CONST 0 (None) 34 RETURN_VALUE whereas an fl-string representation of: >>> def x(): ... foo = "foo" ... s1 = fl"S1 value {foo}" ... s2 = fl"S2 value {s1}" ... print(s2) ... would behave close to: >>> def x(): ... foo = "foo" ... s1 = lambda: f"S1 value {foo}" ... s2 = lambda: f"S2 value {s1()}" ... print(s2()) ... >>> dis.dis(x) 2 0 LOAD_CONST 1 ('foo') 2 STORE_DEREF 0 (foo) 3 4 LOAD_CLOSURE 0 (foo) 6 BUILD_TUPLE 1 8 LOAD_CONST 2 (<code object <lambda> at 0x7ff2ef1abd20, file "<stdin>", line 3>) 10 LOAD_CONST 3 ('x.<locals>.<lambda>') 12 MAKE_FUNCTION 8 14 STORE_DEREF 1 (s1) 4 16 LOAD_CLOSURE 1 (s1) 18 BUILD_TUPLE 1 20 LOAD_CONST 4 (<code object <lambda> at 0x7ff2ef1abae0, file "<stdin>", line 4>) 22 LOAD_CONST 3 ('x.<locals>.<lambda>') 24 MAKE_FUNCTION 8 26 STORE_FAST 0 (s2) 5 28 LOAD_GLOBAL 0 (print) 30 LOAD_FAST 0 (s2) 32 CALL_FUNCTION 0 34 CALL_FUNCTION 1 36 POP_TOP 38 LOAD_CONST 0 (None) 40 RETURN_VALUE Where LOAD_CONST, LOAD_CONST, MAKE_FUNCTION sequences are replaced with BUILD_LAZY_STRING (name's provisional) producing the same lambda-like formatter function that cooperates with FORMAT_VALUE and BUILD_STRING/BUILD_LAZY_STRING ops. ---------- components: +Interpreter Core -Library (Lib) nosy: -serhiy.storchaka _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue32954> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com