diff options
| author | zhang <zch921005@126.com> | 2020-02-23 13:49:12 +0800 |
|---|---|---|
| committer | zhang <zch921005@126.com> | 2020-02-23 13:49:12 +0800 |
| commit | 920e07a6a7fe9c7982083900f08fbf4b23d2e66a (patch) | |
| tree | 75a0020db90efde890218584f9e931a712b6667a | |
| parent | 6cd95662a9f96438159b6b5245096f0e4d04c44a (diff) | |
可变参数,延迟板顶,yield 关键字与python 函数式闭包编程
| -rw-r--r-- | learning_python/__init__.py | 0 | ||||
| -rw-r--r-- | learning_python/late_binding.py | 23 | ||||
| -rw-r--r-- | learning_python/mutable_params.py | 13 | ||||
| -rw-r--r-- | learning_python/yield_demo.py | 19 |
4 files changed, 55 insertions, 0 deletions
diff --git a/learning_python/__init__.py b/learning_python/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/learning_python/__init__.py 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)) + diff --git a/learning_python/mutable_params.py b/learning_python/mutable_params.py new file mode 100644 index 0000000..6e2fdce --- /dev/null +++ b/learning_python/mutable_params.py @@ -0,0 +1,13 @@ + +def append_to(element, to=[]): + to.append(element) + return to + + +if __name__ == '__main__': + + my_list = append_to(12) + print(my_list, append_to) + + my_other_list = append_to(42) + print(my_other_list, append_to) diff --git a/learning_python/yield_demo.py b/learning_python/yield_demo.py new file mode 100644 index 0000000..46480c3 --- /dev/null +++ b/learning_python/yield_demo.py @@ -0,0 +1,19 @@ + + +def generator(): + for i in range(10): + yield i + print(i) + + +def fun(): + for i in range(10): + print(i) + print(i) + + +if __name__ == '__main__': + + # for i in generator(): + # print(i) + fun() |
