From 920e07a6a7fe9c7982083900f08fbf4b23d2e66a Mon Sep 17 00:00:00 2001 From: zhang Date: Sun, 23 Feb 2020 13:49:12 +0800 Subject: =?UTF-8?q?=E5=8F=AF=E5=8F=98=E5=8F=82=E6=95=B0=EF=BC=8C=E5=BB=B6?= =?UTF-8?q?=E8=BF=9F=E6=9D=BF=E9=A1=B6=EF=BC=8Cyield=20=E5=85=B3=E9=94=AE?= =?UTF-8?q?=E5=AD=97=E4=B8=8Epython=20=E5=87=BD=E6=95=B0=E5=BC=8F=E9=97=AD?= =?UTF-8?q?=E5=8C=85=E7=BC=96=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- learning_python/__init__.py | 0 learning_python/late_binding.py | 23 +++++++++++++++++++++++ learning_python/mutable_params.py | 13 +++++++++++++ learning_python/yield_demo.py | 19 +++++++++++++++++++ 4 files changed, 55 insertions(+) create mode 100644 learning_python/__init__.py create mode 100644 learning_python/late_binding.py create mode 100644 learning_python/mutable_params.py create mode 100644 learning_python/yield_demo.py diff --git a/learning_python/__init__.py b/learning_python/__init__.py new file mode 100644 index 0000000..e69de29 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() -- cgit v1.2.3