On 06/06/2016 17:19, Steven D'Aprano wrote:

(2) The "variables are like boxes" metaphor applies to static languages like
C and Pascal, where the compiler has knowledge of what variables will
exist. Such languages allocate space for the variables at compile time,
usually using fixed memory locations on the stack, or in registers, but
rarely dynamically in the heap. That's exactly what Python doesn't do.

With sane programs of the kind I would write, variables appear in the source code:

 a = b

Thus they are known to the compiler and can be given special treatment compared to any that there might be in an exec() string.

That the language allows the internal entries required for such names to be 'deleted', or not to create them at all in code such as:

   if cond:
      b = 10

(when cond is false) is another matter. A disassembly will clearly show the name "b". And it would be ludicrous to suggest that here:

 pass    # 1
 a = 0   # 2
 pass    # 3

"a" doesn't exist at all at line 1 or at the start of line 2, and only comes fully into existence by line 3. "a" exists by name in the byte-code as well as the source code from the start.

a is a variable.

--
Bartc

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to