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

Python函数内递增全局变量方法及F-string调用函数疑问

问题分析与解决方案

原代码的问题在于:F-string中的表达式只会被求值一次,之后将结果用于字符串重复操作。所以{p()}仅执行一次得到1,字符串"1 "被重复2次后输出1 1,而非预期的两次调用函数得到1 2。

以下是两种符合「必须在F-string中调用函数」要求的可行方案:

方案1:显式多次调用函数

直接在F-string中多次写入函数调用表达式,确保每次调用都被执行:

i = 0
def p():
    global i
    i += 1
    return i
print(f"{p()} {p()}")

执行后输出:1 2

方案2:动态次数调用(适合非固定次数场景)

如果需要根据变量控制调用次数,可在F-string内部使用生成器表达式结合str.join():

i = 0
def p():
    global i
    i += 1
    return i
call_times = 2
print(f"{' '.join(str(p()) for _ in range(call_times))}")

执行后同样输出:1 2,且可通过修改call_times灵活调整调用次数。

内容的提问来源于stack exchange,提问作者Taha Ahmed Mallick

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 05:15:37