I’m aware that in python every identifier or variable name is a reference to the actual object.
a = "hello"
b = "hello"
When I compare the two strings
a == b
the output is
True
If I write an equivalent code in Java,the output would be false because the comparison is between references(which are different) but not the actual objects.
So what i see here is that the references(variable names) are replaced by actual objects by the interpreter at run time.
So,is is safe for me to assume that “Every time the interpreter sees an already assigned variable name,it replaces it with the object it is referring to” ? I googled it but couldn’t find any appropriate answer I was looking for.
If you actually ran that in Java, I think you’d find it probably prints out true because of string interning, but that’s somewhat irrelevant.
I’m not sure what you mean by “replaces it with the object it is referring to”. What actually happens is that when you write
a == b, Python callsa.__eq__(b), which is just like any other method call onawithbas an argument.If you want an equivalent to Java-like
==, use theisoperator:a is b. That compares whether the namearefers to the same object asb, regardless of whether they compare as equal.