Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #12249
| From | Peter Otten <__peter__@web.de> |
|---|---|
| Newsgroups | comp.lang.python |
| Subject | Re: The RAISE_VARARGS opcode in Python 3 |
| Followup-To | comp.lang.python |
| Date | 2011-08-27 08:49 +0200 |
| Organization | None |
| Message-ID | <j3a428$16b$1@solani.org> (permalink) |
| References | <mailman.454.1314397241.27778.python-list@python.org> |
Followups directed to: comp.lang.python
Arnaud Delobelle wrote:
> Here is an extract from the dis module doc [1]
>
> """
> RAISE_VARARGS(argc)
> Raises an exception. argc indicates the number of parameters to the
> raise statement, ranging from 0 to 3. The handler will find the
> traceback as TOS2, the parameter as TOS1, and the exception as TOS.
> """
>
> OTOH, looking at PEP 3109:
>
> """
> In Python 3, the grammar for raise statements will change from [2]
>
> raise_stmt: 'raise' [test [',' test [',' test]]]
> to
>
> raise_stmt: 'raise' [test]
> """
>
> So it seems that RAISE_VARARGS's argument can only be 0 or 1 in Python
> 3, whereas it could be up to 3 in Python 2.
It can be up to 2 in Python 3,
>>> help("raise")
The ``raise`` statement
***********************
raise_stmt ::= "raise" [expression ["from" expression]]
...
confirmed by a quick look into ceval.c:
TARGET(RAISE_VARARGS)
v = w = NULL;
switch (oparg) {
case 2:
v = POP(); /* cause */
case 1:
w = POP(); /* exc */
case 0: /* Fallthrough */
why = do_raise(w, v);
break;
default:
PyErr_SetString(PyExc_SystemError,
"bad RAISE_VARARGS oparg");
why = WHY_EXCEPTION;
break;
}
break;
> Can anyone confirm that
> this is the case? In this case, I guess the dis docs need to be
> updated.
Indeed.
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
The RAISE_VARARGS opcode in Python 3 Arnaud Delobelle <arnodel@gmail.com> - 2011-08-26 23:20 +0100
Re: The RAISE_VARARGS opcode in Python 3 Peter Otten <__peter__@web.de> - 2011-08-27 08:49 +0200
Re: The RAISE_VARARGS opcode in Python 3 Arnaud Delobelle <arnodel@gmail.com> - 2011-08-27 08:00 +0100
csiph-web