Is this an example of Tail Recursion As I have read in this answer: What is tail recursion? tail recursion is a special case of recursion where the calling function does no more computation after making a recursive call.

Here after the recursive call we just assign the result to another variable. 
Can we consider this code as tail recursion?

class Solution:
    def swapPairs(self, head: ListNode) -&gt; ListNode:

        if not head or not head.next:
            return head

        head_ = head
        head_next = head.next
        head_next_next = head.next.next

        head_next.next = head_

        head_.next = self.swapPairs(head_next_next)

        return head_next
It is considered tail recursion if there is no computation between the recursive call and the return.

In your example there is no computation, only an assignment.

It would depend  on the actual compiler if code for an optimised tail recursive call was made at this point, but yes some compilers could treat this as a tail recursive call.