First of all, your code doesn't do that. You code has a syntax error in it, and even if it didn't you can't print a lower case hello and get an upper case Hello printed.
Why does it return None? It has to return something, because every Python function does. Now think about this situation:
>>> print('Hello world!')
Hello world!
That's what happens when print returns None, because None does not have a repr. So it prints the string to print, and then prints the repr of the return value, which is nothing. Say print returned the string it printed. Then you would get this:
>>> print('Hello world!')
Hello world!
'Hello world!'
It would display 'Hello world!' twice, once without quotes, and once with quotes (the repr of the string). That would be silly. And that's why print returns None.