Comments (#) go to start of line in the insert mode in Vim

I suppose you have set smartindent in your .vimrc

See :h smartindent

When typing '#' as the first character in a new line, the indent for
that line is removed, the '#' is put in the first column.  The indent
is restored for the next line.  If you don't want this, use this
mapping: ":inoremap # X^H#", where ^H is entered with CTRL-V CTRL-H.
When using the ">>" command, lines starting with '#' are not shifted
right.

I believe you don't need smartindenting while coding python. So just remove it from your settings or add the following to your .vimrc:

au! FileType python setl nosmartindent

try putting that in your .vimrc:

autocmd BufRead *.py inoremap # X<c-h>#

This will make that the insertion of the hash (pound) sign is always indented in Python source files.