2024-03-28 22:09:13 发布
网友
我试着用字典作为开关。我写了:
a = {'1': f1(x, y), '2': f2(x)} while True: try: selection = getOption() b = a[selection] break except Exception: print "Error"
但是我有以下问题:如果我选择1,我不想运行f2,但是看起来虽然我选择了选项1,f2运行。我该怎么修
谢谢
在代码中,创建字典已经执行了这些函数。为了避免这种情况,应该在字典中存储对函数对象的引用,而不是函数执行的结果。对于您的特定情况,可以使用lambda函数:
a = {'1': lambda: f1(x, y), '2': lambda: f2(x)} selection = getOption() b = a[selection]()
注意最后一行末尾的一对括号,用于调用从字典中检索到的函数对象
如果所有函数都接收相同的参数集,比如(x, y),则可以将其简化为
(x, y)
a = {'1': f1, '2': f2} selection = getOption() b = a[selection](x, y)
在代码中,创建字典已经执行了这些函数。为了避免这种情况,应该在字典中存储对函数对象的引用,而不是函数执行的结果。对于您的特定情况,可以使用lambda函数:
注意最后一行末尾的一对括号,用于调用从字典中检索到的函数对象
如果所有函数都接收相同的参数集,比如
(x, y)
,则可以将其简化为相关问题 更多 >
编程相关推荐