如何在函数间传递输入变量,避免重复触发用户输入提示
实现方案
核心思路是将仅需获取一次的变量a存储在独立的持久化作用域中,和需要重复执行的计算逻辑拆分,避免每次调用函数都触发a的输入提示。
方案1:使用类实现(推荐,状态管理清晰)
适合需要维护多个持久化变量的复杂场景:
class Calculator: def __init__(self): # 初始化时仅获取一次a的输入 self.a = input("请输入a的值:") def calc(self): # 每次调用仅获取b的输入,执行计算 b = input("请输入b的值:") c = self.a + b # 如果你需要修改a的值并持久保存,可以直接修改self.a # 例如 self.a = c return c # 初始化实例,仅此处会触发a的输入 cal = Calculator() # 多次调用calc方法,仅会要求输入b print(cal.calc()) print(cal.calc())
方案2:使用闭包实现(轻量方案)
适合简单场景,无需定义类:
def init_calculator(): # 外层函数仅执行一次,获取a的输入 a = input("请输入a的值:") def calc(): nonlocal a b = input("请输入b的值:") c = a + b # 需要修改a的话直接赋值即可,会保留修改后的值 # a = c return c return calc # 初始化计算器,仅此处触发a的输入 calc = init_calculator() # 多次调用仅要求输入b print(calc()) print(calc())
方案3:全局变量实现(极简临时方案)
适合一次性脚本等简单场景,不推荐在复杂项目中使用:
# 全局域仅执行一次,获取a的输入 a = input("请输入a的值:") def calc(): global a b = input("请输入b的值:") c = a + b # 修改a的话直接赋值 # a = c return c # 多次调用仅要求输入b print(calc()) print(calc())
如果需要保留每次a+b的历史计算结果,在对应作用域中新增一个列表变量存储所有计算值即可。
内容的提问来源于stack exchange,提问作者Z728x
相关产品推荐
相关产品推荐

