Python 嵌套f字符串?

Python 嵌套f字符串?,python,python-3.x,string-formatting,f-string,Python,Python 3.x,String Formatting,F String,所以我有一些复杂的东西,但这里有一个简单的版本: i, j = 1, 2 a_1, a_2 = 1, 2 f"{a_f'{i}'} + {a_f'{j}'} = 3" == '1 + 2 = 3' 我想要一个左边的表达式,给出一个右边的结果,我在这里写的表达式给出了一个错误 这可以使用嵌套的f字符串来完成吗?您是否试图通过创建字符串来动态获取变量? 如果是这样,并且它不是类属性,我想到的唯一解决方案是使用全局或局部(如下所示),但不推荐使用: f'{globals()[f&

所以我有一些复杂的东西,但这里有一个简单的版本:

i, j = 1, 2
a_1, a_2 = 1, 2
f"{a_f'{i}'} + {a_f'{j}'} = 3" == '1 + 2 = 3'
我想要一个左边的表达式,给出一个右边的结果,我在这里写的表达式给出了一个错误


这可以使用嵌套的f字符串来完成吗?

您是否试图通过创建字符串来动态获取变量? 如果是这样,并且它不是类属性,我想到的唯一解决方案是使用全局或局部(如下所示),但不推荐使用:

f'{globals()[f"a_{i}"]} + {globals()[f"a_{j}"]} = 3' == '1 + 2 = 3'

有关更多信息,请参见

不支持嵌套f字符串。可以创建变量来实现相同的目的:

i, j = 1, 2
a_1, a_2 = 1, 2
v1 = globals()[f"a_{i}"]
v2 = globals()[f"a_{j}"]
f"{v1} + {v2} = 3" == '1 + 2 = 3'

另请参见:

如果没有上下文,这似乎是一个错误。您可能应该使用dict或list来代替变量,例如

dict

>>> i, j = 1, 2
>>> a = {1: 1, 2: 2}
>>> f"{a[i]} + {a[j]} = 3"
'1 + 2 = 3'
>>> i, j = 0, 1  # list indexing starts at 0
>>> a = [1, 2]
>>> f"{a[i]} + {a[j]} = 3"
'1 + 2 = 3'
列表

>>> i, j = 1, 2
>>> a = {1: 1, 2: 2}
>>> f"{a[i]} + {a[j]} = 3"
'1 + 2 = 3'
>>> i, j = 0, 1  # list indexing starts at 0
>>> a = [1, 2]
>>> f"{a[i]} + {a[j]} = 3"
'1 + 2 = 3'

你能不能——很快——详细解释一下这种情况的原因?也许你的问题有更多的解决方案,但不是通过f字符串。