No Python 2.6+ e Python 3, você pode optar por usar o método de formatação de string mais recente.
print('<a href="{0}">{0}</a>'.format(my_url))
o que evita que você repita o argumento, ou
print('<a href="{url}">{url}</a>'.format(url=my_url))
se você quiser parâmetros nomeados.
print('<a href="{}">{}</a>'.format(my_url, my_url))
que é estritamente posicional e vem apenas com a ressalva de que os argumentos format () seguem as regras do Python em que args não nomeados devem vir primeiro, seguidos por argumentos nomeados, seguidos por * args (uma sequência como lista ou tupla) e depois * kwargs (um dict digitado com strings se você souber o que é bom para você). Os pontos de interpolação são determinados primeiro substituindo os valores nomeados em seus rótulos e depois posicionais do que resta. Então, você também pode fazer isso ...
print('<a href="{not_my_url}">{}</a>'.format(my_url, my_url, not_my_url=her_url))
Mas não isso ...
print('<a href="{not_my_url}">{}</a>'.format(my_url, not_my_url=her_url, my_url))