On Wed, Jul 6, 2011 at 1:07 PM, Phlip <phlip2...@gmail.com> wrote:
> If I call m = md5() twice, I expect two objects.
>
> I am now aware that Python bends the definition of "call" based on
> where the line occurs. Principle of least surprise.

There is no definition-bending.  The code:

"""
def file_to_hash(path, m = hashlib.md5()):
    # do stuff...

file_to_hash(path1)
file_to_hash(path2)
"""

does not call hashlib.md5 twice.  It calls it *once*, at the time the
file_to_hash function is defined.  The returned object is stored on
the function object, and that same object is passed into file_to_hash
as a default value each time the function is called.  See:

http://docs.python.org/reference/compound_stmts.html#function
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to