お疲れ様です。pythonに余り触れたことのない初心者です。
下記のプログラムについて、幾つか不明な点があるため質問させて頂きます。

  1. randrange(len(x) - 1 ) とはどこまでの範囲なのでしょうか?
    len(x)とは何でしょう?-1の理由がいまいち分かりません...
  2. random_indexとはdel_dict_itemsという名の関数にrandrangeの範囲でランダムな要素を入れるという理解でよろしいのでしょうか?
  3. except KeyErrorsetdefaultindexNoneという要素を入れた時、なぜKeyErrorが実行されるようになるのでしょうか?
    Noneを要素を入れたら辞書型のdelは実行できる、という理解でよろしいのしょうか。
  4. timeit.Timer() の中の from __main__ import random とは何でしょう?また t.dicttimeit.timer()del_dict_items(x)del_dict_items の違いは何でしょう?

以上が私が理解できなかった部分です。
お手数ですが、手助け頂ければ幸いです。

import timeit
import random

def del_dict_items(x):
    random_index = random.randrange(len(x) - 1)
    try:
        del x[random_index]
    except KeyError:
        x.setdefault(random_index, None)
        del x[random_index]

print("i\t\tlist_del_time\t\tdict_del_time")
for i in range(100000, 1000001, 20000):
    t_list = timeit.Timer("del x[random.randrange(len(x)-1)]", "from __main__ import random, x")
    t_dict = timeit.Timer("del_dict_items(x)", "from __main__ import random, x, del_dict_items")
    x = list(range(i))
    list_del_time = t_list.timeit(number=1000)
    x = {j:None for j in range(i)}
    dict_del_time = t_dict.timeit(number=1000)
    print("%d %10.3f %20.3f" %(i, list_del_time, dict_del_time))