[Tutor] Why does print(a_list.sort()) return None?

Cameron Simpson cs at zip.com.au
Sun Mar 29 08:00:46 CEST 2015


On 29Mar2015 00:34, boB Stepp <robertvstepp at gmail.com> wrote:
>I am puzzled by the following:
>
>Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:44:40) [MSC v.1600
>64 bit (AMD64)] on win32
>Type "copyright", "credits" or "license()" for more information.
>>>> a_list = [5, 0, 2, 4, 1]
>>>> print(a_list.sort())
>None
>>>> print(a_list)
>[0, 1, 2, 4, 5]
>>>>
>
>I expected the first print statement to return what the second one
>did. Apparently the first print printed a_list, then did the sort. Why
>is this so?

Both prints are as expected: they are printing the value of the expressions 
inside the parentheses.

So: taking the latter print first:

  print(a_list)

it is printing a_list, as you might expect after the sort.

The former print:

  print(a_list.sort())

is printing the result of "a_list.sort()".

Like most Python functions that operate on something (i.e. .sort, which sorts 
the list in place), the .sort method returns None. And that is printed.

Try running the expressions themselves, discarding the "print". In the 
interactive interpreter, each expression you type in has its results printed 
unless the result is None. So, in Python 3.4.3 here:

  Python 3.4.3 (default, Mar 10 2015, 14:53:35)
  [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)] on darwin
  Type "help", "copyright", "credits" or "license" for more information.
  >>> a_list = [5, 0, 2, 4, 1]
  >>> a_list.sort()
  >>> a_list
  [0, 1, 2, 4, 5]
  >>>

The assignment has no return value.
The .sort() call returns None, so the interpreter prints nothing.
The expression "a_list" is of course the list, which is printed.

Just to be glaingly obvious about this aspect of the interactive interpreter:

  >>> x=1
  >>> x
  1
  >>> x=None
  >>> x
  >>>

Cheers,
Cameron Simpson <cs at zip.com.au>

You are just paranoid, and all your friends think so too.
        - James Joseph Dominguez <d9250788 at zac.riv.csu.edu.au>


More information about the Tutor mailing list