在python中断言函数

时间:2012-02-28 10:23:35

标签: python assert

对于给定的代码:

pattern = r'(?:some_pattern)'  
def find(seq):
    ret = []
    while True :
        m= pattern_re.match(seq)
        if not m :
            break
        myseq= m.group(2)
        assert len(myseq)%3 == 0
        assert len(myseq) > 6
        ret.append(myseq)
        pos = m.end()
        return ret

sequence = 'some sequence'
my_seq = find(sequence)

这将返回ret,其中仅采用第一个断言函数而不是第二个。有什么解决方案吗?

问题只是如何使代码同时考虑断言函数

1 个答案:

答案 0 :(得分:2)

对于初学者,你为什么要使用assert?

一旦第一个断言失败,就会引发AssertionError并停止执行程序。

你应该使用正常的条件。除此之外,这段代码有很多错误或异常,我认真建议你阅读http://docs.python.org/tutorial/上的Python教程

指针:

  • 返回后的打印声明
  • 使用assert而不是条件
  • 不必要的while循环
  • 没有合适的缩进

此外,您粘贴了一个明显不执行的示例,因为缩进是错误的,并且代码中不存在最后一行调用的函数。如果您需要帮助,请更准确: - )