Python中修改f-string引用变量后格式化文本打印未变化的原因及解决方法
问题成因
Python的f-string在定义时就会完成变量求值,不会延迟到使用时才计算。你在num = 0阶段就定义了x = f"Hello number {num}",此时x已经被生成为固定字符串Hello number 0,后续修改num的值不会改变已经生成的字符串内容,这就是你看到输出始终是0的原因。
修复方法
方法1:将f-string移入循环内定义
每次循环时基于最新的num值生成新的字符串即可:
num = 0 while True: x = f"Hello number {num}" print(num) print(x) num += 1
方法2:封装为函数实现延迟求值
如果不想把字符串定义放在循环里,也可以封装成可调用对象,每次使用时才动态计算当前值:
num = 0 x = lambda: f"Hello number {num}" while True: print(num) print(x()) num += 1
内容的提问来源于stack exchange,提问作者Just_A_Name
相关产品推荐
相关产品推荐

