def fringe8(xxx_todo_changeme, xxx_todo_changeme1):
    (px, py) = xxx_todo_changeme
    (x1, y1, x2, y2) = xxx_todo_changeme1
    f = [(px + dx, py + dy) for dx, dy in product((-1, 0, 1), (-1, 0, 1)) if
        (dx, dy) != (0, 0)]
f_inrange = [(fx, fy) for fx, fy in f if x1 <= fx < x2 and y1 <= fy < y2]
return f_inrange
fringe8((2, 2), (1, 1, 3, 3))
How can this verbose, unpythonic routine be improved?