Python 3 is a backward-incompatible redesign of the language, so most Python 2 code needs changes to run on it. Python 2 reached its end of life on January 1, 2020, and new projects use Python 3.
The main differences are:
print became a function, so you write print("hello") instead of print "hello".
Strings are Unicode text by default, and raw bytes have their own bytes type.
The / operator does true division, so 5/2 returns 2.5 where Python 2 returned 2. Use // for floor division.
range() returns a lazy range object instead of a list, and map() and filter() return iterators.
raw_input() was renamed to input(), which always returns a string.
Rewriting in plainer words…
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.