CSC/ECE 517 Spring 2014/ch1 1w1l m: Difference between revisions
Jump to navigation
Jump to search
(Added basic definition of a closure) |
(Somewhat better closure example) |
||
Line 4: | Line 4: | ||
=== What is a closure? === | === What is a closure? === | ||
Very simply, a closure is a function that can use | Very simply, a closure is a function that can use a variable that was valid within the scope that the closure was defined, but need not be in-scope where the closure is called. A quick example is very illustrative. | ||
<code> | <code> | ||
#!/usr/bin/env python | |||
# Define a function that makes use of closures | |||
def closure_builder(message="Default"): | |||
def closure(): | |||
# Message is in-scope here | |||
print message | |||
return closure | |||
# Build two functions | |||
default_closure = closure_builder() | |||
custom_closure = closure_builder("Custom") | |||
# In case you're not convinced | |||
del closure_builder | |||
# Call the closures you built | |||
default_closure() # Amazingly, prints "Default" | |||
custom_closure() # Amazingly, prints "Custom" | |||
</code> | </code> | ||
Revision as of 07:11, 23 February 2014
Design Patterns Involving Closures
Background
What is a closure?
Very simply, a closure is a function that can use a variable that was valid within the scope that the closure was defined, but need not be in-scope where the closure is called. A quick example is very illustrative.
#!/usr/bin/env python
# Define a function that makes use of closures
def closure_builder(message="Default"):
def closure():
# Message is in-scope here
print message
return closure
# Build two functions
default_closure = closure_builder()
custom_closure = closure_builder("Custom")
# In case you're not convinced
del closure_builder
# Call the closures you built
default_closure() # Amazingly, prints "Default"
custom_closure() # Amazingly, prints "Custom"
Examples
Narration
Links to Important Terms
References
<references />