On 2006-08-03 10:57:22, Slawomir Nowaczyk wrote: > #> In any case, the following doesn't seem to be implementation detail > #> (and rather a part of the language), but it's not really > #> understandable with a C++ concept of "variable": > #> > #> >>> a=3 > #> >>> id(a) > #> 3368152 > #> >>> b=a > #> >>> id(b) > #> 3368152 > #> >>> b=4 > #> >>> id(b) > #> 3368140 > > How about that? > > int main() > { > int three = 3; > int four = 4; > int *a, *b; > a = &three; > printf("%i %i\n",a,*a); > b = a; > printf("%i %i\n",b,*b); > b = &four; > printf("%i %i\n",b,*b); > return 0; > } > > Just in case you don't have C compiler at hand, it prints:
I don't have to :) But seriously, for my comment this seems off-topic. I did not say that you can't create Python behavior with C (of course you can, you can do /everything/ in C :). You can build constructs made up of C variables that simulate everything that any Python construct does. That's not the point. The point is how the simple, built-in language variable behaves. > #> You don't expect the "identity" of the variable b to change > #> with a simple assignment from a C/C++ point of view. > > That depends on your definition of "identity", of course. Right. "Identity" is not defined in C, but most C programmers would probably take the address of a variable as the closest to a variable's identity. > #> You also don't expect the "identity" of a and b to be the same > #> after assigning one to the other. > > Don't I? I don't know. Try replacing your printf statements with something like "printf("%x %i %i\n",&a,a,*a);" and watch the first column. The address operator is probably for a C programmer the closest to what the id() function is to a Python programmer. Gerhard -- http://mail.python.org/mailman/listinfo/python-list