Binary to decimal number converter
A few additional points for your learning experience.

You're not using sys, so the import line is unnecessary.

In range(...), the default start is 0,
so instead of range(0, x) you can write simply range(x).



Don't use pointless comments like this:


# Return 1 if exponent is 0
if exponent == 0:
    return 1





Instead if this:


power = base
for j in range(1, exponent):
    power *= base



It would be better this way:

power = 1
for j in range(exponent):
    power *= base


Because in this version base is referenced only once,
and range is simplified by dropping 1 to use the default 0.



action="store" is unnecessary here:


parser.add_argument('binary_number', action="store")





main is not a good name for that function does.
It would be better to rename it to binary_to_decimal, for example.

And while at it,
it would be better to move the content from the if __name__ ... inside a new main method, like this:

def main():

    parser = argparse.ArgumentParser(description='Converts a binary to a decimal number.')
    parser.add_argument('binary_number')
    args = parser.parse_args()
    binary_to_decimal(args.binary_number)

if __name__ == '__main__':
    main()


Many people miss this point, actually.
The reason to do it this way is that code in the if __name__ ... block is in the global namespace.
So variables with the same name in the rest of the code will shadow those variables,
which can lead to nasty bugs.
By moving that code to a method,
this cannot happen.

PEP8

PEP8 is the official style guide of Python,
and you have a few violations:


Put 2 blank lines before each method definition and you only put 1.
Put 2 spaces in front of # inline comments
Lines should not be longer than 79 characters