Your recursive function should take as input four parameters: a sorted list being searched, the key being searched for, and a left and right index into the list. Your fucntion looks only in the sublist starting at index left and going through and including index right. For example, suppose that the_list is:
[27, 78, 105, 135, 411, 431, 434, 468, 493, 501, 525, 534, 551, 654, 780]
which contains 15 items, indexed 0 to 14. If I call binary_search(the_list, 135, 0, 14), then I'm considering the entire list, and the return value should be 3, since the value 135 appears at index 3. If I call binary_search(the_list, 500, 0, 14), the return value should be None, since the value 500 is not in the_list. The call binary_search(the_list, 135, 2, 12) should return 3 since, as before, the value 135 appears at index 3 in the_list. Notice that the index returned is the index in the entire list, not the relative index in the sublist starting at index left. The parameters left and right just give the range of indices into the list that we're considering in a given call of binary_search.