[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

I'm wrong or Will we fix the ducks limp?

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.