summaryrefslogtreecommitdiff
path: root/learning_python/late_binding.py
diff options
context:
space:
mode:
authorzhang <zch921005@126.com>2020-02-23 13:49:12 +0800
committerzhang <zch921005@126.com>2020-02-23 13:49:12 +0800
commit920e07a6a7fe9c7982083900f08fbf4b23d2e66a (patch)
tree75a0020db90efde890218584f9e931a712b6667a /learning_python/late_binding.py
parent6cd95662a9f96438159b6b5245096f0e4d04c44a (diff)
可变参数,延迟板顶,yield 关键字与python 函数式闭包编程
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))
+