如何实现可指定全局变量的整数输入循环函数?
问题2:动态指定全局变量接收输入的解决方案
你的代码现在的问题是硬编码了global a,没法动态切换要赋值的全局变量。要解决这个问题,我们可以利用Python的globals()字典——它能直接访问当前的全局命名空间,通过变量名字符串来动态操作全局变量。
修改后的代码如下:
def intry(var_name='a'): while True: try: # 先获取并转换输入为整数 input_num = int(raw_input("请输入一个整数:")) # 通过globals()字典,把值赋值给指定的全局变量 globals()[var_name] = input_num # 返回输入的数值,方便外部直接使用 return input_num except ValueError: print 'Try again' # 第一次调用,默认把输入存入全局变量a intry() # 第二次调用,指定把输入存入全局变量b intry('b') # 现在就能正常打印a + b了 print a + b
额外建议:尽量避免全局变量
其实从代码设计的角度来说,全局变量容易导致代码耦合度高、难以维护。更优雅的写法是让函数直接返回输入的整数,然后在外部自己赋值给变量:
def intry(): while True: try: return int(raw_input("请输入一个整数:")) except ValueError: print 'Try again' # 外部自行赋值给不同变量,逻辑更清晰 a = intry() b = intry() print a + b
这种写法职责更明确,函数只负责获取并验证输入,变量的管理交给外部,后续维护起来也更方便。
内容的提问来源于stack exchange,提问作者Auroni Bhattacharya
相关产品推荐
相关产品推荐

