summaryrefslogtreecommitdiff
path: root/learning_python/late_binding.py
diff options
context:
space:
mode:
Diffstat (limited to 'learning_python/late_binding.py')
-rw-r--r--learning_python/late_binding.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/learning_python/late_binding.py b/learning_python/late_binding.py
new file mode 100644
index 0000000..775a6d7
--- /dev/null
+++ b/learning_python/late_binding.py
@@ -0,0 +1,23 @@
+
+def create_multipliers():
+ return [lambda x : i * x for i in range(5)]
+
+
+def create_multipliers_explicit():
+ return [lambda x, i=i: i * x for i in range(5)]
+
+
+def create_multipliers_yield():
+ for i in range(5):
+ yield lambda x: i*x
+
+
+for multiplier in create_multipliers():
+ print(multiplier.__closure__[0].cell_contents, multiplier(2))
+
+for multiplier in create_multipliers_explicit():
+ print(multiplier.__closure__, multiplier(2))
+
+for multiplier in create_multipliers_yield():
+ print(multiplier.__closure__[0].cell_contents, multiplier(2))
+