On 2015-10-14 12:27, Peter Otten wrote:
Alex Kleider wrote:
On 2015-10-13 14:44, Alex Kleider wrote:
On 2015-10-13 12:11, Danny Yoo wrote:
######################
def make_ask(f, l, p):
d = {'Enter your first name: ' : f,
'Enter your last name: ' : l,
'Your mobile phone #: ' : p}
return d.get
######################
This is an example of a 'closure' is it not?
It does not make big difference, but I would call the return value
"bound
method" rather than "closure". For me closure implies access to the
local
namespace of the enclosing function, e. g.
def make_ask(f, l, p):
d = {'Enter your first name: ' : f,
'Enter your last name: ' : l,
'Your mobile phone #: ' : p}
def get(key):
return d.get(key)
return get
Here d is looked up when get() is invoked. Let's make a modification to
demonstrate that the current binding of d is used:
def make_ask(f, l, p):
... d = {'Enter your first name: ' : f,
... 'Enter your last name: ' : l,
... 'Your mobile phone #: ' : p}
... def get(key):
... return d.get(key)
... def set_d(new_d):
... nonlocal d
... d = new_d
... return get, set_d
...
get, set_d = make_ask(*"abc")
get("Enter your first name: ")
'a'
class WontTell:
... def get(self, key): return "won't tell"
...
set_d(WontTell())
get("Enter your first name: ")
"won't tell"
Thank you, Peter, for your continued efforts to explain.
It is all getting pretty convoluted for my poor brain!
It took a very long time for me to figure out what the
class WontTell was all about.
I probably should follow Danny Yoo's advice and not concern
myself with this but my curiosity is roused.
ak
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor