[Python-Dev] Can Python implementations reject semantically invalid expressions? (original) (raw)
Mark Dickinson dickinsm at gmail.com
Fri Jul 2 09:29:05 CEST 2010
- Previous message: [Python-Dev] Can Python implementations reject semantically invalid expressions?
- Next message: [Python-Dev] Can Python implementations reject semantically invalid expressions?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Fri, Jul 2, 2010 at 8:22 AM, Mark Dickinson <dickinsm at gmail.com> wrote:
On Fri, Jul 2, 2010 at 7:55 AM, Craig Citro <craigcitro at gmail.com> wrote:
dis.dis("raise TypeError()") 0 <114> 26977 3 <115> 8293 6 IMPORTSTAR 7 SETUPEXCEPT 25968 (to 25978) 10 <69> 11 <114> 28530 14 <114> 10536 dis.dis("1 + '1'") 0 <49> 1 SLICE+2 2 STORESLICE+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?
Ah. I see. It looks like the string "raise TypeError()" is being interpreted directly as Python bytecode, with no intermediate compilation. I don't think this is what you intended. Try:
dis.dis(compile("raise TypeError", "", "exec")) 1 0 LOAD_NAME 0 (TypeError) 3 RAISE_VARARGS 1 6 LOAD_CONST 0 (None) 9 RETURN_VALUE dis.dis(compile("1 + '1'", "", "exec")) 1 0 LOAD_CONST 0 (1) 3 LOAD_CONST 1 ('1') 6 BINARY_ADD 7 POP_TOP 8 LOAD_CONST 2 (None) 11 RETURN_VALUE
Mark
- Previous message: [Python-Dev] Can Python implementations reject semantically invalid expressions?
- Next message: [Python-Dev] Can Python implementations reject semantically invalid expressions?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]