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
相关产品推荐
相关产品推荐

