I thought the display in Python interactive mode was always equivalent to print(repr()), but this is not so for None. Is this a language feature or
Yes, this behaviour is intentional.
From the Python docs
7.1. Expression statements
Expression statements are used (mostly interactively) to compute and write a value, or (usually) to call a procedure (a function that returns no meaningful result; in Python, procedures return the value
None). Other uses of expression statements are allowed and occasionally useful. The syntax for an expression statement is:expression_stmt ::= starred_expressionAn expression statement evaluates the expression list (which may be a single expression).
In interactive mode, if the value is not
None, it is converted to a string using the built-inrepr()function and the resulting string is written to standard output on a line by itself (except if the result isNone, so that procedure calls do not cause any output.)