diff options
Diffstat (limited to 'learning_python/late_binding.py')
| -rw-r--r-- | learning_python/late_binding.py | 23 |
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)) + |
