You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 04:15:02