I've been wondering this for some time. As the title say, which is faster, the actual function or simply raising to the half power?
UPDATE
This is not a matter of premature optimization. This is simply a question of how the underlying code actually works. What is the theory of how Python code works?
I sent Guido van Rossum an email cause I really wanted to know the differences in these methods.
My email:

There are at least 3 ways to do a square root in Python: math.sqrt, the
  '**' operator and pow(x,.5).  I'm just curious as to the differences in
  the implementation of each of these.  When it comes to efficiency which
  is better?

His response:

pow and ** are equivalent; math.sqrt doesn't work for complex numbers,
  and links to the C  sqrt() function. As to which one is
  faster, I have no idea...
How many square roots are you really performing?  Are you trying to write some 3D graphics engine in Python?  If not, then why go with code which is cryptic over code that is easy to read?  The time difference is would be less than anybody could notice in just about any application I could forsee.  I really don't mean to put down your question, but it seems that you're going a little too far with premature optimization.
Which is faster in Python: x**.5 or math.sqrt(x)?