python switch高效替代_用Python字典代替switch/cas

我最近了解到python没有switch/case语句。我一直在读关于用字典代替字典的书,例如:values = {

value1: do_some_stuff1,

value2: do_some_stuff2,

valueN: do_some_stuffN,

}

values.get(var, do_default_stuff)()

我搞不懂的是如何把这个应用到靶场测试中。所以,与其做一些事情,如果value1=4比如说,做一些事情,如果value1<4.这样的事情(我知道这不起作用):values = {

if value1

if value2 >val: do_some_stuff2,

}

values.get(var, do_default_stuff)()

我试过用if/elif/else语句来实现这一点。它工作得很好,但与我不需要IF语句的情况相比,它看起来要慢得多(这可能是显而易见的不可避免的事情)。下面是我的代码和if/elif/else语句:if sep_ang(val1,val2,X,Y)>=ROI :

main.removeChild(source)

elif sep_ang(val1,val2,X,Y)<=5.0:

integral=float(spectrum[0].getElementsByTagName("parameter")[0].getAttribute("free"))

index=float(spectrum[0].getElementsByTagName("parameter")[0].getAttribute("free"))

print name,val1,val2,sep_ang(val1,val2,X,Y),integral,index

print >> reg,'fk5;point(',val1,val2,')# point=cross text={',name,'}'

else:

spectrum[0].getElementsByTagName("parameter")[0].setAttribute("free","0") #Integral

spectrum[0].getElementsByTagName("parameter")[1].setAttribute("free","0") #Index

integral=float(spectrum[0].getElementsByTagName("parameter")[0].getAttribute("free"))

index=float(spectrum[0].getElementsByTagName("parameter")[0].getAttribute("free"))

print name,val1,val2,sep_ang(val1,val2,X,Y),integral,index

print >> reg,'fk5;point(',val1,val2,')# point=cross text={',name,'}'

大约需要5分钟来检查1500个var sep_ang值。如果我不想使用setAttribute()根据sep_ang的值更改xml文件中的值,则使用以下简单的if-else:if sep_ang(val1,val2,X,Y)>=ROI :

main.removeChild(source)

else:

print name,val1,val2,ang_sep(val1,val2,X,Y);print >> reg,'fk5;point(',val1,val2,')# point

只需要大约30秒。我再次知道,添加elif语句和更改该属性的值很可能会不可避免地增加代码的执行时间,我只是好奇是否有办法解决这个问题。

编辑:

在我的情况下,使用对分语句而不是if/elif语句的好处是它可以比使用一堆elif语句更快地检查某个范围内的值吗?

似乎我还需要使用elif语句。例如:range=[10,100]

options='abc'

def func(val)

return options[bisect(range, val)]

if func(val)=a:

do stuff

elif func(val)=b:

do other stuff

else:

do other other stuff

所以我的elif语句只检查一个值。

非常感谢你的帮助,非常感谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值