首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >try/ end语句中"None“结束"pass”在计算时间上的差异

try/ end语句中"None“结束"pass”在计算时间上的差异
EN

Stack Overflow用户
提问于 2017-07-05 09:18:11
回答 1查看 493关注 0票数 0

在python中,我在一个很长的循环中使用并尝试/ very语句。如果引发异常,则不应采取任何措施。

代码语言:javascript
复制
try :
  *Some Code*
except :
  pass

如果我使用第一个命题,循环计算的总时间约为10分钟

代码语言:javascript
复制
try :
  *Some Code*
except :
  None

如果我使用第二个提议,循环计算的总时间约为2分钟

为什么它是如此不同,为什么第二个更快,因为,在逻辑上,传球是一个比没有更好的解决方案?

确切的代码是:

代码语言:javascript
复制
try:
 indexes = peakutils.peak.interpolate(self.list_height, input_1, ind=indexes, width=self.gauss_width)
except:
 None / Pass

我用这两种丙做了几次测试,结果总是一样的。

如何计算时间:

代码语言:javascript
复制
start = default_timer()
im.get_events() #The loop where the try/except statement appears
finish = default_timer()
print('ELAPSED TIME : %s'%(finish - start))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-05 09:45:27

赋予两项职能:

代码语言:javascript
复制
def func_none():
  return None

def func_pass():
  pass

他们在做同样的事情,使用dis进行验证。

代码语言:javascript
复制
>>> import dis
>>> dis.dis(func_none)
# 0 LOAD_CONST               0 (None)
# 3 RETURN_VALUE

>>> dis.dis(func_pass)
# 0 LOAD_CONST               0 (None)
# 3 RETURN_VALUE

实际上,以下是经过的定义

pass是一个空操作--当它被执行时,什么都不会发生。当语句在语法上是必需的,但不需要执行代码时,它作为占位符非常有用,例如:

结论pass语句在理论上与None一样快。

编辑:为什么使用None而不是return None的时间可能比较慢(如OP示例中所示)。

赋予两项职能:

代码语言:javascript
复制
def func_none():
  try:
    1/0
  except:
    None

def func_pass():
  try:
    1/0
  except:
    pass

使用dis的不同之处:

代码语言:javascript
复制
>>> import dis
>>> dis.dis(func_none)
# Skip to expect part

  18 LOAD_CONST               0 (None)
  21 POP_TOP             
  22 JUMP_FORWARD             1 (to 26)
  25 END_FINALLY         
  26 LOAD_CONST               0 (None)
  29 RETURN_VALUE  

dis.dis(func_pass)

# Skip to expect part

  18 JUMP_FORWARD             1 (to 22)
  21 END_FINALLY         
  22 LOAD_CONST               0 (None)
  25 RETURN_VALUE 

因此很明显,使用None而不是pass将增加两个额外的操作LOAD_CONSTPOP_TOP。它不应该增加8分钟,所以我相信这不是真正的原因。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44921972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档