使用f-string循环生成字符串时,如何显示原变量名而非循环变量名?
解决方法
问题出在你遍历的是变量的值,循环变量i只是拿到了a、b、c的数值,f"{i=}"自然只会显示循环变量的名字i。要保留原变量名,得把变量名和对应的值绑定在一起处理,推荐两种实现方式:
方式一:手动构造字典(最稳妥)
直接把需要的变量名和对应的值存入字典,遍历字典的键值对生成目标片段:
a = 1 b = 2 c = 3 # 绑定变量名与对应值 var_map = {'a': a, 'b': b, 'c': c} # 生成每个"变量名=值"的片段 pieces = [f"{name}={value}" for name, value in var_map.items()] # 用逗号加空格拼接所有片段 result = ', '.join(pieces) print(result) # 输出: a=1, b=2, c=3
方式二:利用局部作用域变量(减少重复代码)
通过locals()获取当前局部作用域的变量,指定目标变量名列表来生成结果:
a = 1 b = 2 c = 3 # 指定需要处理的变量名列表 target_vars = ['a', 'b', 'c'] # 从局部变量中取出对应值并生成片段 pieces = [f"{name}={locals()[name]}" for name in target_vars] result = ', '.join(pieces) print(result) # 输出: a=1, b=2, c=3
这种方式不需要重复写变量值,但要确保target_vars里的名字和实际变量名完全一致,避免出错。
内容的提问来源于stack exchange,提问作者apostofes
相关产品推荐
相关产品推荐

