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. -- http://mail.python.org/mailman/listinfo/python-list