[Python-Dev] Can Python implementations reject semantically invalid expressions?

Mark Dickinson dickinsm at gmail.com
Fri Jul 2 09:22:43 CEST 2010


On Fri, Jul 2, 2010 at 7:55 AM, Craig Citro <craigcitro at gmail.com> wrote:
>
> Ok, I'm obviously being silly here, but sure you can:
>
>>>> dis.dis("raise TypeError()")
>          0 <114>           26977
>          3 <115>            8293
>          6 IMPORT_STAR
>          7 SETUP_EXCEPT    25968 (to 25978)
>         10 <69>
>         11 <114>           28530
>         14 <114>           10536
>>>> dis.dis("1 + '1'")
>          0 <49>
>          1 SLICE+2
>          2 STORE_SLICE+3
>          3 SLICE+2
>          4 <39>
>          5 <49>
>          6 <39>

Whoa.  That's very peculiar looking bytecode.  Is dis.dis behaving as
it should here?
BTW, I think you want 'raise TypeError', not 'raise TypeError()'.

Mark


More information about the Python-Dev mailing list