Every Python function for which there is no specified return value returns the value None. The function
print() is no exception.
print() is a function which does something, but returns None. What it does is convert the object within its parentheses to a stream of text, then send that stream to a standard output (stdout), usually your console screen.
Your example looks like you meant:
b = print('a')
When the first line is executed, as with every assignment statement, the first thing that happens is that the expression to the right of the assignment operator (=) is executed, and its returned value is placed in memory. This is
print('a'), and when it is executed, you see a appear on your screen.
Next, the memory address of the value returned by that expression is assigned to the variable on the left. The value is None and the variable is b, so when we get to the second line,
print(b), the value of b is turned into a stream of text and sent to the screen, where we see the text None appear.