0
a=10 b=10 print(id (a) is id (b)) output=false. Why?
5 ответов
+ 13
Devraj Naik ,
In Python,
the `id()` function returns the unique identifier for an object.
Even though `a` and `b` have the same value of 10, they are separate objects with different memory addresses. That's why, `id(a) is id(b)`return `False`.
check this...
https://www.geeksforgeeks.org/id-function-python/
https://www.digitalocean.com/community/tutorials/python-id
+ 8
Lothar ,
a = 10
print(id(a)) ->510871984720
b = 10
print(id(b)) ->510871984720
`print(id(a) is id(b)) # Output: False`
In this ,
both `a` and `b` have the same value of 10, and they share the same memory address.
However,it returns False because it compares the memory addresses themselves, not the values stored in those addresses.
+ 6
print( a == b) #true
print( type(a) == type(b)) #true
print( id(a) == id(b) ) #true
print( id(a) is id(b) ) #false
+ 5
Darpan kesharwani🇮🇳 ,
sorry to say, but your explanation of the problem is not correct. it would be better to run a test to verify your statement.
a = 10
print(id(a)) # result -> 510871984720
b = 10
print(id(b)) # result -> 510871984720
>>> both variables are showing the same id value. there is only one object, but 2 variables that are pointing to it.
this behaviour of python means, that variable *a* and *b* share the same value of 10.
so we can expect that the following expression results in True:
print(id(a) is id(b)) # result -> False
but the result shows False. you may get a better understanding of this by reading this article from *stackoverflow*:
https://stackoverflow.com/questions/50893267/how-can-two-python-objects-have-same-id-but-is-operator-returns-false
+ 4
As a rule, you should use the is operator to compare objects and not IDs. Because you will get undesirable results. Because of memory efficiency and object reuse in Python, two different variables that hold the same value might share the same memory address. A and b are different references sharing the same memory address, therefore print(id(a) is not id(b))) # true
The most reliable way to check if two variables point to the same object is by using the is operator directly on the variables themselves:
print(a is b)
The id sharing the same memory address made this confusing. But this helped me understand why it was happening.
https://embeddedinventor.com/python-is-and-is-not-explained-with-examples/