Calling Function Without Parentheses!
Terry Reedy
tjreedy at udel.edu
Sun Jan 2 21:52:04 EST 2005
"Kamilche" <klachemin at comcast.net> wrote in message
news:1104715584.407505.190910 at f14g2000cwb.googlegroups.com...
> What a debug nightmare! I just spent HOURS running my script through
> the debugger, sprinkling in log statements, and the like, tracking down
> my problem.
Did you try PyChecker? (Don't know if
> I called a function without the ending parentheses.
Which means you didn't call, and that was your problem ;-) In Python, the
(...) pair in the appropriate context (where an operator is expected) *is*
the infix/postfix call operator. It is equivalent to the call or gosub
prefix in some other languages. The call operator works with any callable,
not just function objects.
>I sure do WISH Python would trap it when I try to do the following:
trap = raise an exception? nooooh.
> MyFunc
> instead of:
> MyFunc()
In Python, non-keyword names resolve at runtime to the objects they are
then bound to. This simple, uniform rule is, to me, part of the beauty of
Python. There are lots of times that one wants to refer to a callable
without calling it. Indeed, because Python separates referring to an
object from calling the object, it can and does have a broader notion of
'callable' than other languages. This includes the option of making
instances of any user class callable (by including a __call__ method).
Terry J. Reedy
More information about the Python-list
mailing list