[Tutor] Runs in IDLE with F5, but not in Windows Command Prompt

eryksun eryksun at gmail.com
Thu Apr 25 22:12:56 CEST 2013


On Thu, Apr 25, 2013 at 9:45 AM, Marc Tompkins <marc.tompkins at gmail.com> wrote:
>
> If you put quotes around your input, Python recognizes it as a string
> literal.  Python "executes" string literals by simply printing them to
> standard output - try it at a Python prompt sometime - which is probably not
> the behavior you were expecting, but doesn't throw an error either.

It's only printed in Python's interactive REPL (read-eval-print loop).

http://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop

String literals, like all literals, are handled by the compiler.  The
instantiated string gets stored somewhere such as a __doc__ attribute,
a code object's constants, a function's defaults, etc.

In 2.x, built-in input() compiles and evaluates a temporary code
object (in CPython it uses PyRun_StringFlags) in the current globals
and locals. If the source string is just the literal, the compiled
bytecode is a LOAD followed by a RETURN:

    >>> code = compile('"boB"', '', 'eval')
    >>> dis.dis(code)
      1           0 LOAD_CONST               0 ('boB')
                   3 RETURN_VALUE


More information about the Tutor mailing list