Basically your mistake is in
res = res.extend(B)
.extend()
doesn't return a new list, but modifies the instance.
Another problem is that you don't use the return value from your recursive calls. Here is one way to fix your code:
def permutations(A, B = ''):
assert len(A) >= 0
assert len(A) == len(set(A))
if len(A) == 0:
return [B]
else:
res = []
for i in range(len(A)):
res.extend(permutations(A[0:i] + A[i+1:], B + A[i]))
return res
print permutations('word')