Reference
Ben Finney
ben+python at benfinney.id.au
Wed Mar 5 16:07:25 EST 2014
Marko Rauhamaa <marko at pacujo.net> writes:
> Say I implement Python. Say I returned a random number for id(), how
> would that violate the language spec?
You could do that, certainly. So long as that randomly-chosen integer
was always the same for every object, and never the same for any other
concurrently-existing object, it can just as well be assigned randomly.
If you're saying that your implementation of ‘id(foo)’ would return a
*different* integer when called at different times for the same object,
then yes, that violates the specification for that function.
> It would violate the spec. But there would have to be a paragraph in
> the specification that was violated or a reference test case that
> failed.
Yes. It would violate this paragraph:
Every object has an identity, a type and a value. An object’s
identity never changes once it has been created […] the id()
function returns an integer representing its identity.
<URL:http://docs.python.org/3/reference/datamodel.html>
Again, I ask you to read these documents for comprehension.
> For example, this test would demonstrate obviously invalid behavior:
>
> >>> print(id(x))
> 129
> >>> print(id(x))
> 201
Yes. That violates the paragraph above, and so that implementation is
not compliant with the Python language reference.
--
\ “I watched the Indy 500, and I was thinking that if they left |
`\ earlier they wouldn't have to go so fast.” —Steven Wright |
_o__) |
Ben Finney
More information about the Python-list
mailing list