ZeC*_*oca 1 python switch-statement
我正在尝试使用python开关编写代码,如在dict中所建议的那样模拟:替换Python中的switch语句?[第二答案,尼克]
当我测试时,出于某种原因,内部的所有函数都被调用,尝试了一个简单的代码来查看出了什么问题并重复了问题。看到:
def switch(f):
    print('Switch got: ', f)
    var = {
        1: func1(),
        2: func2(),
        3: func3()
        }.get(f,False)
    return var
def func3():
    fb = 'Func3 called'
    print(fb)
    return fb
def func1():
    rsp = 'Func1 called'
    print(rsp)
    return rsp
def func2():
    rsp = 'Func2 called'
    print(rsp)
    return rsp
var = switch(1)
print(var)
我的预期回报是:
Switch got:  1
Func1 called
相反,我得到了:
Switch got:  1
Func1 called
Func2 called
Func3 called
Func1 called
我从中得到的是,python似乎在调用适当的键(示例中为1)之前在dict中运行了所有func。
这是Python中的预期行为吗?
有没有办法解决,仅调用与键对应的功能?
这是Python中的预期行为吗?
是。
有没有办法解决,仅调用与键对应的功能?
创建调度字典时,请不要实际调用函数:
def switch(k):
    print('Switch got: ', k)
    func = {
        1: func1,
        2: func2,
        3: func3,
    }.get(k, bool)
    var = func()
    return var
| 归档时间: | 
 | 
| 查看次数: | 44 次 | 
| 最近记录: |