Matimus wrote:
> Christoph wrote:
>> Maybe the following syntax would be even more intuitive:
>>
>> def foo(a: "a info", b: "b info") return "ret info" raise "exc info":
>> return "hello world"
>
> That seems much more intuitive and extensible. The "->" syntax has
> always bothered me. The main issue I see with it though is that it
> might be confusing. Consider:
>
> def foo(a, b) return 0:
>
> return a + b
>
> A person reading the code might be tempted to read the annotation and
> think that it is the body. Maybe not a huge problem, but definitely
> something that will come up occasionally.
Yes, that's a drawback; and the same problem for a "raise" clause.
Well, yes, but wasn't the whole point of PEP 3107 to get rid of such
decorators and provide a single standard way of specifying this kind of
info instead?
Maybe, but I think it also does two more things: 1. creates a standard
location for storing annotations, and 2. Keeps you from violating DRY
(http://en.wikipedia.org/wiki/DRY).
Using a single decorator for exception info (or even return info) does
not violate either of the two stated benefits. The exception
information would go into the standard annotations dictionary. The
raises decorator does not violate DRY any more or less than it would
if added to the language syntax.
That's a valid point, but as you already mentioned, the same applies to
the return value. In my opinion it is desirable that either both return
value and exceptions get a special syntax, or both must be described
using decorators.
-- Christoph
--
http://mail.python.org/mailman/listinfo/python-list