Skip to content
This repository has been archived by the owner on Apr 1, 2021. It is now read-only.

Article: Python Function ID #962

Merged
merged 3 commits into from
May 17, 2016
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions Python-Function-ID.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Python id(object)

`id()` is a built-in function in Python 3, which returns the *identity* of an object. The *identity* is a unique integer for that object during its lifetime. In CPython implementation, this is the address of the object in memory which is not necessarily true for other python implementations.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In CPython implementation

A beginner would want to know what you mean by CPython implementation, so better link to the GitHub mirror of CPython interpreter, or some article that talks about this.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

which is not necessarily true for other python implementations.

I know that CPython is not a perform-ant implementation. PyPy and Pyston would probably handle performance better by moving around objects in memory.

But reading it, it feels like that id() need to be same, is not part of the spec. Is that so? I am not fully aware of this.


## Argument

### object
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Change this to a h4


The `object` argument can typically be a `int`,`float`, `str`,`list`, `dict`, `tuple` etc.

## Return Value

The return value would be a unique and constant `integer`.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duplicate line can be removed.


## Code Sample
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

-## Code Sample
+### Code Sample


```python
a = 2
print(id(a)) #=> 140454723286976 (Values returned by id() might be different for different users)

b = 3
print(id(b)) #=> 140454723287008

c = 2
print(id(c)) #=> 140454723286976 (This is same as id(a) since they both contain the same value and hence have same memory address)

print(id(a) == id(b)) #=> False (since a and b have different values stored in them)
print(id(a) == id(c)) #=> True (since a and c have same values stored in them)

d = 1.1
e = 1.1
print(id(d) == id(e)) #=> True (since d and e have same values stored in them)

str1 = 'hello'
str2 = 'hello'
print(id(str1) == id(str2)) #=> True (since str1 and str2 have same values stored in them)

# For complex objects like lists, tuples, dictionaries etc. id() would give a unique integer even if the content of those containers is same.
tup1 = (1,1)
tup2 = (1,1)
print(id(tup1) == id(tup2)) #=> False
```

:rocket: [REPL It!](https://repl.it/CQw7/1)

[Official Docs](https://docs.python.org/3/library/functions.html#id)