Pre/Postconditions with decorators

Stephen Thorne stephen.thorne at gmail.com
Thu Jan 6 18:02:40 EST 2005


On 6 Jan 2005 13:33:42 -0800, Rittersporn <rittersporn at gmail.com> wrote:
> @condition("number>0 and number<2","result>=0")
> def sqrt(number):
>         import math
>         return math.sqrt(number)
> 
> @condition("list(seq) is not None","sum(seq)==result")
> def my_sum(seq):
>         tmp=0
>         for element in seq:
>                 tmp+=element
>         return tmp
> 
> print sqrt(1.2)
> print my_sum([1,2,3])

I think it would be nicer to have the pre and post conditions being compilable.

@condition((list(seq) is not None for seq in args), (sum(seq)==result
for ((seq,), result) in (args, result))

or something silly like that.

Personally, I'd prefer this:
@precondition(list(seq) is not None for seq in args)
@postcondition(sum(seq)==result for ((seq,), result) in (args, result))

(this is, of course, using the framehack lambda replacement presented
in a thread about a week ago).

Stephen.


Stephen.



More information about the Python-list mailing list