On Fri, Sep 30, 2016 at 3:43 AM, Alan Gauld via Tutor <tutor@python.org> wrote: > On 30/09/16 03:43, boB Stepp wrote: > >> Also, I note that if I just type a function name without the >> parentheses in the interpreter, I will get something like this: >> >>>>> def f(): >> pass >> >>>>> f >> <function f at 0x000001F775A97B70> >> >> So the impression I am getting is that a function name by itself (with >> no parentheses) is the function *object*. > > No. > The function name is just a name like any other name in Python
I understand this. It gets tiring to be precise and say something like, "So the impression I am getting is that a function name by itself (with no parentheses) references the function object." But I probably should strive to be more precise in my writing as you otherwise have to guess what I know and don't know. >> But why does Python require separating the function object >> from its parameters when it is being passed as an argument >> to another function? > > g = f > > causes g to become a second reference to the function object > > g = f(x) > > causes g to become a reference to the result of calling > the function object referred to by f, passing in the object > referred to by x. > > The parentheses in this case are not there as a container > of the object x they are there as an indication that f > is being called. I think this was my key point of confusion. I was mistakenly thinking of f(x) as referring to the function object. Instead, it is calling that object with argument x, which is two separate things. > HTH It does. Thanks, Alan! -- boB _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor