Helper function to solve Project Euler question 26
I'm just going to comment on your gcd function.


The docstring mixes up the function's interface ("computes gcd of a, b") with its implementation ("using Euclidean algorithm"). It's best to restrict the docstring to the interface (which is what the user needs to know); if you also need to document the implementation, put it in comments.
Your gcd implementation returns None if its arguments are not integers. This behaviour should be mentioned in the docstring.
But returning exceptional values is generally a bad idea: it pushes the complexity of error handling onto the caller, where it would be easy to forget to do the checking. And in fact you have failed to check that the result is not None:

g = gcd(abs_p, abs_q)
p = abs_p / g   # What if g is None here?


It is better for a function to raise an exception if it is given the wrong arguments: that way the caller doesn't need to take any special precautions, but the error is reliably detected and reported.
The test isinstance(a, int) is too restrictive. Euclid's GCD algorithm will work on other kinds of numbers too, and it would be nice to be able to support:

&gt;&gt;&gt; from fractions import Fraction
&gt;&gt;&gt; gcd(Fraction(1, 3), Fraction(1,4))
Fraction(1, 12)


or:

&gt;&gt;&gt; from decimal import Decimal
&gt;&gt;&gt; gcd(Decimal('11.1'), Decimal('2.1'))
Decimal('0.3')


instead of having to write separate gcd implementations for these other types.

So in fact the best thing to do is not to have any type-checking at all in your gcd function. If someone calls it with the wrong type of object, they will get a TypeError:

&gt;&gt;&gt; gcd('hello', 'world')
Traceback (most recent call last):
    ...
TypeError: not all arguments converted during string formatting

You call abs on the arguments a and b. But in fact you only ever call gcd with arguments that have non-negative values already. So the extra calls to abs are wasted.
So in summary, I would write the gcd function like this:

def gcd(a, b):
    """Return the greatest common divisor of a and b."""
    while b != 0:
        a, b = b, a % b
    return a

But in fact Python already has a built-in gcd function (in the fractions module), so all you actually have to do is write:

from fractions import gcd