Others have pointed out many list methods, particularly those that mutate the list, return None rather than a reference to the list. The reason they do this is so that you don't get confused about whether a copy of the list is made. If you could write a = b.extend([4, 5, 6]) then is a a reference to the same list as b? Was b modified by the statement? By returning None instead of the mutated list, such a statement is made useless, you figure out quickly that a doesn't have in it what you thought it did, and you learn to just write b.extend(...) instead. Thus the lack of clarity is removed.