Yerel olarak tanımlanmış işlevler için herhangi bir yol var mı? Örnek olarak, testi geçememek içindoctest yerel olarak tanımlanmış işlevler
def foo():
""" >>> foo()
testfoo"""
def foo2():
""" >>> 1/0 """
print 'testfoo'
foo2()
.
def foo():
"""
>>> foo()
testfoo"""
def foo2():
""" >>> 1/0 """
print 'testfoo'
foo2()
if __name__ == '__main__':
import doctest
doctest.testmod()
testi sadece geçirir: örneğin, düzeltmek eğer aşağıdaki gibi - Ama yine de
Bu bir yazım hatasıdır ve niyetimi şaşırtıyor: __NOT__ testinin geçmesini istiyorum .. foo2'deki doctest dizesi nedeniyle "ZeroDivisionError: tamsayı bölme veya sıfıra göre modulo" gibi bir şey almak istiyorum. Soru, altprogramların nasıl yapılacağıdır. –
Ah, anlıyorum. (Nested) işlev nesnesinin mevcut olmadığı bir ** nested ** işlevinin docstring'i görünmez - ve kodunuzda foo2 için işlev nesnesi yalnızca dış işlev foo yürütülürken var olur. (Dış işlevin *, uygulama içi detayı olarak dahili olarak kullanmak yerine iç işlev nesnesini döndürdüğü normal kapatma fabrikası durumunda, daha fazla seçenek vardır). Temel olarak, ** bir şekilde foo2'nin tersine gizlenmiş bir dokumanın foo2 işini yapmak zorundadır, çünkü hiç kimse bunu yapamaz (foo2 ** başka biri için ** yoktur **). –