There's no way you can do that changing only that line. You can do:

a = [1]
b = a
a[0] = 2
b[0]

That creates a list, assigns the reference to a, then b also, uses the a reference to set the first element to 2, then accesses using the b reference variable.

Answer from Matthew Flaschen on Stack Overflow
Top answer
1 of 11
89

There's no way you can do that changing only that line. You can do:

a = [1]
b = a
a[0] = 2
b[0]

That creates a list, assigns the reference to a, then b also, uses the a reference to set the first element to 2, then accesses using the b reference variable.

2 of 11
55

I want form.data['field'] and form.field.value to always have the same value

This is feasible, because it involves decorated names and indexing -- i.e., completely different constructs from the barenames a and b that you're asking about, and for with your request is utterly impossible. Why ask for something impossible and totally different from the (possible) thing you actually want?!

Maybe you don't realize how drastically different barenames and decorated names are. When you refer to a barename a, you're getting exactly the object a was last bound to in this scope (or an exception if it wasn't bound in this scope) -- this is such a deep and fundamental aspect of Python that it can't possibly be subverted. When you refer to a decorated name x.y, you're asking an object (the object x refers to) to please supply "the y attribute" -- and in response to that request, the object can perform totally arbitrary computations (and indexing is quite similar: it also allows arbitrary computations to be performed in response).

Now, your "actual desiderata" example is mysterious because in each case two levels of indexing or attribute-getting are involved, so the subtlety you crave could be introduced in many ways. What other attributes is form.field suppose to have, for example, besides value? Without that further .value computations, possibilities would include:

class Form(object):
   ...
   def __getattr__(self, name):
       return self.data[name]

and

class Form(object):
   ...
   @property
   def data(self):
       return self.__dict__

The presence of .value suggests picking the first form, plus a kind-of-useless wrapper:

class KouWrap(object):
   def __init__(self, value):
       self.value = value

class Form(object):
   ...
   def __getattr__(self, name):
       return KouWrap(self.data[name])

If assignments such form.field.value = 23 is also supposed to set the entry in form.data, then the wrapper must become more complex indeed, and not all that useless:

class MciWrap(object):
   def __init__(self, data, k):
       self._data = data
       self._k = k
   @property
   def value(self):
       return self._data[self._k]
   @value.setter
   def value(self, v)
       self._data[self._k] = v

class Form(object):
   ...
   def __getattr__(self, name):
       return MciWrap(self.data, name)

The latter example is roughly as close as it gets, in Python, to the sense of "a pointer" as you seem to want -- but it's crucial to understand that such subtleties can ever only work with indexing and/or decorated names, never with barenames as you originally asked!

🌐
Reddit
reddit.com › r/learnpython › why doesn't python have pointers?
r/learnpython on Reddit: Why doesn't Python have pointers?
April 21, 2023 -

No, really. I've just started practicing problems on Leetcode and today I tried to do a bunch of things with Linked lists in python. I always second guess myself when I'm writing assignment statements like node = next_node because I'm worried that using shallow copies might screw things up for me.

Wouldn't it have been way easier to directly reference objects by their memory location?

I'm not going to use C for coding interviews so I'd also appreciate any ways I can idiot proof my code when I'm dealing with moving and assigning objects in Python.

One idea I had was to include a deepcopy method in the List node class definition but I can't make any changes to the leetcode question setup.

Top answer
1 of 28
219
Because it’s high level by design
2 of 28
137
Pointers are a concept that really doesn't make sense in Python, both because of practical reasons and philisophical reasons. In Python, "variables" are really "lebels" attached to objects, not a specific memory location in your address space. The internals of the Python interpreter do make use of pointers, but that's because it's written in C. Philisophically, the designers of Python view pointers as an intrinsically bad thing - they have all sorts of downsides that would have made Python a bad language. What Python has instead, is bindings - the labels I mentioned above - and they actually do behave in some ways like pointers, but without the downsides. Bindings do not have a type, but the objects they are bound to do have a type, and unlike in C, an object (i.e. a value or more complex type) can have multiple labels. Furthermore, container types like tuples, lists, and dictionaries contain references to objects, which are very like pointers: they don't have a name (binding) but they do give you a way to refer to an object - of any type. If you make a linked list element class in Python like this: class Element: def __init__(self,pred,value): self.pred = pred self.value = value That gives you a linked list with a reference to the previous Element in each object, and you can traverse the links like this: >>> a = Element(None,1) >>> b = Element(a,2) >>> c = Element(b,3) >>> c.pred.pred.value 1 >>> c.pred.value 2 Semantically, that's pretty much like pointers. Generally it's less useful to use such structures in Python, though it's still valid in some situations, but you can take advantage of references to build complex dynamic data structures you can traverse in the same way as most linked-list or tree structures in other languages.
🌐
Real Python
realpython.com › pointers-in-python
Pointers in Python: What's the Point? – Real Python
March 18, 2026 - Pointers are widely used in C and C++. Essentially, they are variables that hold the memory address of another variable. For a refresher on pointers, you might consider checking out this overview on C Pointers. In this article, you’ll gain a better understanding of Python’s object model and learn why pointers in Python don’t really exist.
🌐
GeeksforGeeks
geeksforgeeks.org › python › using-pointers-in-python-using-ctypes
Using Pointers in Python using ctypes - GeeksforGeeks
July 23, 2025 - As the name suggests void pointer is a type of Pointer that has no specific data type associated with it. It can be typecasted into any type and can hold data of any type. Since in Python the concept of pointers is not properly available or used we can't properly create a Void Pointer, as the POINTER function requires one argument i.e the data type.
🌐
Scaler
scaler.com › home › topics › do we have pointers in python?
Do We Have Pointers in Python? - Scaler Topics
May 4, 2023 - It manages the code very well. It may be difficult for beginners, but it is an important concept in the program. However, it can result in a variety of memory management bugs. Python does not have explicit pointers like other languages, although they are implemented beneath the hood.
🌐
Launch School
launchschool.com › books › python › read › variables_pointers
How Python objects and variables really work
Python uses pointers to decide which object a variable references. Pointers can lead to surprising and unexpected behavior when two or more variables reference the same object.
🌐
Medium
medium.com › @abhishekjainindore24 › the-concept-of-pointers-in-c-and-c-and-why-python-doesnt-have-them-9ade1875d9ed
The Concept of Pointers in C and C++ and Why Python Doesn’t Have Them | by Abhishek Jain | Medium
October 14, 2024 - Pointers are variables that hold the memory address of another variable. This concept is important for understanding how memory is managed, optimized, and manipulated at a low level.
Find elsewhere
🌐
Anvil
anvil.works › articles › pointers-in-my-python-1
Memory Management in Python - Part 1: What Are Pointers?
So, when you create a list, it will automatically contain pointers if it has any elements. For that reason, we’ll be using a lot of lists as examples throughout this article. ... One Python behaviour that often trips up a lot of beginners is something called pointer aliasing, which is when two pointers refer to the same object in memory.
🌐
EDUCBA
educba.com › home › software development › software development tutorials › python tutorial › pointers in python
Pointers in Python | Type of Pointers | Arithmetic Operations
August 23, 2025 - Variables which serve the special purpose of storing the address of other variables, pointing to the address of the variable of which the address is provided, with obtaining of the value stored at the location being called dereferencing, like a page number in the index of a book that drives the reader to the required content, with performance for repetitive operations like traversing data structures being significantly improved, especially in terms of time and space constraints, supporting the copy and access operations effectively, and are indirectly supported as a concept by Python programming language are termed as pointers in Python.
Address: Unit no. 202, Jay Antariksh Bldg, Makwana Road, Marol, Andheri (East),, 400059, Mumbai
🌐
Pyvideo
pyvideo.org › pycon-us-2024 › pointers-in-python.html
PyVideo.org · Pointers in Python
May 16, 2024 - Remember pointers from C/C++? Why don’t we add them to Python? Make any Python object mutable by manipulating it directly in memory through the pointer as you would do in C/C++. Why do this? Well, pointers have no use in Python, but the point is not implementation itself, but all the internal parts of Python programming language that you will touch while implementing it.
🌐
Pencil Programmer
pencilprogrammer.com › home › python tutorials › pointers in python (explained with examples)
Pointers in Python (Explained with Examples) | Pencil Programmer
December 17, 2025 - Unlike variables, pointers deal with address rather than values. Sadly, Python doesn't have pointers like other languages for explicit use but is implemented under the hood.
🌐
Real Python
realpython.com › courses › pointers-python
Pointers and Objects in Python – Real Python
July 24, 2020 - Austin Cepalia 14 Lessons 1h 4m intermediate python ... If you’ve ever worked with lower-level languages like C or C++, then you may have heard of pointers. Pointers are essentially variables that hold the memory address of another variable.
🌐
GitHub
github.com › ZeroIntensity › pointers.py
GitHub - ZeroIntensity/pointers.py: Bringing the hell of pointers to Python. · GitHub
from pointers import _ text: str = "hello world" ptr = _&text # creates a new pointer object ptr <<= "world hello" print(text) # world hello
Starred by 934 users
Forked by 11 users
Languages: Python 98.4% | C 1.6%
🌐
Python Morsels
pythonmorsels.com › variables-are-pointers
Variables are pointers in Python - Python Morsels
July 18, 2026 - Variables in Python are not buckets that contain things, but pointers: variables point to objects.
🌐
Nickmccullum
nickmccullum.com › python-pointers
How to Use Python Pointers | Nick McCullum
June 13, 2020 - Even in basic programming languages like C and C++, pointers are considered complex. This complexity is against the Zen of Python and this could be the reason why Python doesn't speak about why it doesn't include pointers.
🌐
YouTube
youtube.com › watch
Pointers in Python Are A Real Thing - YouTube
In this video, we learn how to use C-pointers in Python.◾◾◾◾◾◾◾◾◾◾◾◾◾◾◾◾◾📚 Programming Books & Merch 📚🐍 The Python Bible Book: https://www.neuralnine.com/...
Published: December 13, 2022
🌐
Python Morsels
pythonmorsels.com › data-structures-contain-pointers
Data structures contain pointers - Python Morsels
July 18, 2026 - Python represents this list to the Python prompt by putting three dots inside these square brackets: ... It's smart enough not to show an infinite number of square brackets. We didn't stick a bucket inside itself here, because that's physically impossible. Data structures don't contain objects, they contain pointers to objects.
🌐
Quora
quora.com › What-is-the-pointer-in-Python-Does-a-pointer-exist-in-Python
What is the pointer in Python? Does a pointer exist in Python? - Quora
Answer (1 of 7): Answer to: “What is the pointer in Python” Background: I come from assembly language and games coding in C++, so I know what pointers are all about. It’s important to understand variables in Python are effectively pointers in practical use.