Is there a function in fortran that is similar to Deepcopy in Python?
It depends on what you are copying.
For objects that do not have pointer components, ordinary assignment performs a deep copy.
For objects that do have pointer components, you can define an appropriate assignment subroutine. Mind you: what such a routine should do depends very much on the intended use. For instance: if you have a circular buffer that is implemented using a linked list that points back into itself, such an assignment might be tricky.