Python merge sort for a list containing distinct values
To address your immediate concern, yes it is a merge sort.


The naming is quite unusual. The procedure you call merge does the merge sort, and should be called so. The merge phase of the merge sort is done by the

    while i != length_firstHalf and j != length_secondHalf:


loop and the subsequent return. It is advisable to factor it out into a standalone merge procedure. OTOH I don't endorse a complicated return expressions.
It is unclear why do you limit yourself to the distinct values. The second if clause may be safely made into an else, and there is no more worries. Notice that your first comparison firstHalf[i] &gt; secondHalf[j] is the way to handle duplicates.
Computing half doesn't belong to the base case.
As a nitpick, length == 1 or length == 0 is a long way to say length &lt; 2.