How about adding an autocmd to your ~/.vimrc-file, creating a mapping:
autocmd FileType python map <buffer> <F9> :w<CR>:exec '!python3' shellescape(@%, 1)<CR>
autocmd FileType python imap <buffer> <F9> <esc>:w<CR>:exec '!python3' shellescape(@%, 1)<CR>
then you could press <F9> to execute the current buffer with python
Explanation:
autocmd: command that Vim will execute automatically on{event}(here: if you open a python file)[i]map: creates a keyboard shortcut to<F9>in insert/normal mode<buffer>: If multiple buffers/files are open: just use the active one<esc>: leaving insert mode:w<CR>: saves your file!: runs the following command in your shell (try:!ls)%: is replaced by the filename of your active buffer. But since it can contain things like whitespace and other “bad” stuff it is better practise not to write:python %, but use:shellescape: escape the special characters. The1means with a backslash
TL;DR: The first line will work in normal mode and once you press <F9> it first saves your file and then run the file with python.
The second does the same thing, but leaves insert mode first