2016-03-11 64 views
1

在这种情况下,实现新命令很有用,例如可能的ignored [Excepions]而不是将它们定义为函数?Python函数与Cpython命令执行


'忽略' contextmanager:

import contextlib 

@contextlib.contextmanager 
def ignored(*exceptions): 
    try: 
     yield 
    except exceptions: 
     pass 


用法:

with ignored(IndexError, KeyError): 
    ## inside code here 


可能的替代:

ignored IndexError, KeyError: 
    ## inside code here 
+1

你打算如何实施替代方案?你打算更新Python解析器吗? – tdelaney

+0

@tdelaney是的,我想知道你对于优缺点的看法... – JumpAlways

+0

摆弄python解析器很困难,然后你最终会得到一个非标准的解释器,可能会有少许摄取。除了用于练习的玩具实施外,我认为没有好处。如果你喜欢这个挑战,那就去做吧,但我不会把它叫做对别人有用的! – tdelaney

回答

-1

它只是让事情变得更加清洁。

结帐这两种实现

with file("/tmp/foo", "w") as foo: 
    print >> foo, "Hello!" 

这基本上等同于:

foo = file("/tmp/foo", "w") 
try: 
    print >> foo, "Hello!" 
finally: 
    foo.close() 

但你更愿意使用!

检查出this为进一步阅读

+1

我知道,选择是在这个和CPython更新之间... – JumpAlways

+0

啊好的。那么我会接受@tdelaney评论。这总结得很好! – quikst3r