From ca00e1f1bf669e75036a66cc6f12cf630b55efaa Mon Sep 17 00:00:00 2001 From: Paul McCarthy <pauldmccarthy@gmail.com> Date: Thu, 15 Feb 2018 11:10:56 +0000 Subject: [PATCH] numbered advanced practicals --- ...nb => 01_function_inputs_and_outputs.ipynb} | 0 ...ts.md => 01_function_inputs_and_outputs.md} | 0 ...ges.ipynb => 02_modules_and_packages.ipynb} | 18 +++++++++--------- ..._packages.md => 02_modules_and_packages.md} | 18 +++++++++--------- .../fsleyes/__init__.py | 0 .../fsleyes/controls/__init__.py | 0 .../fsleyes/controls/locationpanel.py | 0 .../fsleyes/controls/overlaylistpanel.py | 0 .../fsleyes/frame.py | 0 .../fsleyes/main.py | 0 .../fsleyes/views/__init__.py | 0 .../fsleyes/views/lightboxpanel.py | 0 .../fsleyes/views/orthopanel.py | 0 .../module_and_script.py | 0 .../numfuncs.py | 0 .../sideeffects.py | 0 .../strfuncs.py | 0 ...nb => 03_object_oriented_programming.ipynb} | 0 ...ng.md => 03_object_oriented_programming.md} | 0 ...ing.ipynb => 04_operator_overloading.ipynb} | 0 ...erloading.md => 04_operator_overloading.md} | 0 ...anagers.ipynb => 05_context_managers.ipynb} | 2 +- ...text_managers.md => 05_context_managers.md} | 2 +- .../{decorators.ipynb => 06_decorators.ipynb} | 6 +++--- .../{decorators.md => 06_decorators.md} | 0 advanced_topics/README.md | 14 +++++++------- 26 files changed, 30 insertions(+), 30 deletions(-) rename advanced_topics/{function_inputs_and_outputs.ipynb => 01_function_inputs_and_outputs.ipynb} (100%) rename advanced_topics/{function_inputs_and_outputs.md => 01_function_inputs_and_outputs.md} (100%) rename advanced_topics/{modules_and_packages.ipynb => 02_modules_and_packages.ipynb} (96%) rename advanced_topics/{modules_and_packages.md => 02_modules_and_packages.md} (95%) rename advanced_topics/{modules_and_packages => 02_modules_and_packages}/fsleyes/__init__.py (100%) rename advanced_topics/{modules_and_packages => 02_modules_and_packages}/fsleyes/controls/__init__.py (100%) rename advanced_topics/{modules_and_packages => 02_modules_and_packages}/fsleyes/controls/locationpanel.py (100%) rename advanced_topics/{modules_and_packages => 02_modules_and_packages}/fsleyes/controls/overlaylistpanel.py (100%) rename advanced_topics/{modules_and_packages => 02_modules_and_packages}/fsleyes/frame.py (100%) rename advanced_topics/{modules_and_packages => 02_modules_and_packages}/fsleyes/main.py (100%) rename advanced_topics/{modules_and_packages => 02_modules_and_packages}/fsleyes/views/__init__.py (100%) rename advanced_topics/{modules_and_packages => 02_modules_and_packages}/fsleyes/views/lightboxpanel.py (100%) rename advanced_topics/{modules_and_packages => 02_modules_and_packages}/fsleyes/views/orthopanel.py (100%) rename advanced_topics/{modules_and_packages => 02_modules_and_packages}/module_and_script.py (100%) rename advanced_topics/{modules_and_packages => 02_modules_and_packages}/numfuncs.py (100%) rename advanced_topics/{modules_and_packages => 02_modules_and_packages}/sideeffects.py (100%) rename advanced_topics/{modules_and_packages => 02_modules_and_packages}/strfuncs.py (100%) rename advanced_topics/{object_oriented_programming.ipynb => 03_object_oriented_programming.ipynb} (100%) rename advanced_topics/{object_oriented_programming.md => 03_object_oriented_programming.md} (100%) rename advanced_topics/{operator_overloading.ipynb => 04_operator_overloading.ipynb} (100%) rename advanced_topics/{operator_overloading.md => 04_operator_overloading.md} (100%) rename advanced_topics/{context_managers.ipynb => 05_context_managers.ipynb} (99%) rename advanced_topics/{context_managers.md => 05_context_managers.md} (99%) rename advanced_topics/{decorators.ipynb => 06_decorators.ipynb} (99%) rename advanced_topics/{decorators.md => 06_decorators.md} (100%) diff --git a/advanced_topics/function_inputs_and_outputs.ipynb b/advanced_topics/01_function_inputs_and_outputs.ipynb similarity index 100% rename from advanced_topics/function_inputs_and_outputs.ipynb rename to advanced_topics/01_function_inputs_and_outputs.ipynb diff --git a/advanced_topics/function_inputs_and_outputs.md b/advanced_topics/01_function_inputs_and_outputs.md similarity index 100% rename from advanced_topics/function_inputs_and_outputs.md rename to advanced_topics/01_function_inputs_and_outputs.md diff --git a/advanced_topics/modules_and_packages.ipynb b/advanced_topics/02_modules_and_packages.ipynb similarity index 96% rename from advanced_topics/modules_and_packages.ipynb rename to advanced_topics/02_modules_and_packages.ipynb index 94994e2..b49f0e5 100644 --- a/advanced_topics/modules_and_packages.ipynb +++ b/advanced_topics/02_modules_and_packages.ipynb @@ -20,7 +20,7 @@ "\n", "For this practical we have prepared a handful of example files - you can find\n", "them alongside this notebook file, in a directory called\n", - "`modules_and_packages/`.\n", + "`02_modules_and_packages/`.\n", "\n", "\n", "## Contents\n", @@ -45,7 +45,7 @@ "outputs": [], "source": [ "import os\n", - "os.chdir('modules_and_packages')" + "os.chdir('02_modules_and_packages')" ] }, { @@ -57,8 +57,8 @@ "\n", "\n", "Any file ending with `.py` is considered to be a module in Python. Take a look\n", - "at `modules_and_packages/numfuncs.py` - either open it in your editor, or run\n", - "this code block:" + "at `02_modules_and_packages/numfuncs.py` - either open it in your editor, or\n", + "run this code block:" ] }, { @@ -363,7 +363,7 @@ "can be executed as a script, or imported as a module, or both.\n", "\n", "\n", - "Have a look at the file `modules_and_packages/module_and_script.py`:" + "Have a look at the file `02_modules_and_packages/module_and_script.py`:" ] }, { @@ -387,7 +387,7 @@ "called as a script_. Try it in a terminal now:\n", "\n", "\n", - "> `python modules_and_packages/module_and_script.py`\n", + "> `python 02_modules_and_packages/module_and_script.py`\n", "\n", "\n", "But if we `import` this module from another file, or from an interactive\n", @@ -483,9 +483,9 @@ "package-specific initialisation, and/or to customise the package's namespace.\n", "\n", "\n", - "As an example, take a look the `modules_and_packages/fsleyes/__init__.py` file\n", - "in our mock FSLeyes package. We have imported the `fsleyes_main` function from\n", - "the `fsleyes.main` module, making it available at the package level. So\n", + "As an example, take a look the `02_modules_and_packages/fsleyes/__init__.py`\n", + "file in our mock FSLeyes package. We have imported the `fsleyes_main` function\n", + "from the `fsleyes.main` module, making it available at the package level. So\n", "instead of importing the `fsleyes.main` module, we could instead just import\n", "the `fsleyes` package:" ] diff --git a/advanced_topics/modules_and_packages.md b/advanced_topics/02_modules_and_packages.md similarity index 95% rename from advanced_topics/modules_and_packages.md rename to advanced_topics/02_modules_and_packages.md index 16dfca6..1fdccb8 100644 --- a/advanced_topics/modules_and_packages.md +++ b/advanced_topics/02_modules_and_packages.md @@ -14,7 +14,7 @@ understandable manner. For this practical we have prepared a handful of example files - you can find them alongside this notebook file, in a directory called -`modules_and_packages/`. +`02_modules_and_packages/`. ## Contents @@ -33,7 +33,7 @@ them alongside this notebook file, in a directory called ``` import os -os.chdir('modules_and_packages') +os.chdir('02_modules_and_packages') ``` <a class="anchor" id="what-is-a-module"></a> @@ -41,8 +41,8 @@ os.chdir('modules_and_packages') Any file ending with `.py` is considered to be a module in Python. Take a look -at `modules_and_packages/numfuncs.py` - either open it in your editor, or run -this code block: +at `02_modules_and_packages/numfuncs.py` - either open it in your editor, or +run this code block: ``` @@ -256,7 +256,7 @@ fact, there no difference between a _module_ and a _script_ - any `.py` file can be executed as a script, or imported as a module, or both. -Have a look at the file `modules_and_packages/module_and_script.py`: +Have a look at the file `02_modules_and_packages/module_and_script.py`: ``` @@ -272,7 +272,7 @@ that allows you to add code to a file that is _only executed when the module is called as a script_. Try it in a terminal now: -> `python modules_and_packages/module_and_script.py` +> `python 02_modules_and_packages/module_and_script.py` But if we `import` this module from another file, or from an interactive @@ -351,9 +351,9 @@ from knowing that it is needed. But you can use `__init__.py` to perform some package-specific initialisation, and/or to customise the package's namespace. -As an example, take a look the `modules_and_packages/fsleyes/__init__.py` file -in our mock FSLeyes package. We have imported the `fsleyes_main` function from -the `fsleyes.main` module, making it available at the package level. So +As an example, take a look the `02_modules_and_packages/fsleyes/__init__.py` +file in our mock FSLeyes package. We have imported the `fsleyes_main` function +from the `fsleyes.main` module, making it available at the package level. So instead of importing the `fsleyes.main` module, we could instead just import the `fsleyes` package: diff --git a/advanced_topics/modules_and_packages/fsleyes/__init__.py b/advanced_topics/02_modules_and_packages/fsleyes/__init__.py similarity index 100% rename from advanced_topics/modules_and_packages/fsleyes/__init__.py rename to advanced_topics/02_modules_and_packages/fsleyes/__init__.py diff --git a/advanced_topics/modules_and_packages/fsleyes/controls/__init__.py b/advanced_topics/02_modules_and_packages/fsleyes/controls/__init__.py similarity index 100% rename from advanced_topics/modules_and_packages/fsleyes/controls/__init__.py rename to advanced_topics/02_modules_and_packages/fsleyes/controls/__init__.py diff --git a/advanced_topics/modules_and_packages/fsleyes/controls/locationpanel.py b/advanced_topics/02_modules_and_packages/fsleyes/controls/locationpanel.py similarity index 100% rename from advanced_topics/modules_and_packages/fsleyes/controls/locationpanel.py rename to advanced_topics/02_modules_and_packages/fsleyes/controls/locationpanel.py diff --git a/advanced_topics/modules_and_packages/fsleyes/controls/overlaylistpanel.py b/advanced_topics/02_modules_and_packages/fsleyes/controls/overlaylistpanel.py similarity index 100% rename from advanced_topics/modules_and_packages/fsleyes/controls/overlaylistpanel.py rename to advanced_topics/02_modules_and_packages/fsleyes/controls/overlaylistpanel.py diff --git a/advanced_topics/modules_and_packages/fsleyes/frame.py b/advanced_topics/02_modules_and_packages/fsleyes/frame.py similarity index 100% rename from advanced_topics/modules_and_packages/fsleyes/frame.py rename to advanced_topics/02_modules_and_packages/fsleyes/frame.py diff --git a/advanced_topics/modules_and_packages/fsleyes/main.py b/advanced_topics/02_modules_and_packages/fsleyes/main.py similarity index 100% rename from advanced_topics/modules_and_packages/fsleyes/main.py rename to advanced_topics/02_modules_and_packages/fsleyes/main.py diff --git a/advanced_topics/modules_and_packages/fsleyes/views/__init__.py b/advanced_topics/02_modules_and_packages/fsleyes/views/__init__.py similarity index 100% rename from advanced_topics/modules_and_packages/fsleyes/views/__init__.py rename to advanced_topics/02_modules_and_packages/fsleyes/views/__init__.py diff --git a/advanced_topics/modules_and_packages/fsleyes/views/lightboxpanel.py b/advanced_topics/02_modules_and_packages/fsleyes/views/lightboxpanel.py similarity index 100% rename from advanced_topics/modules_and_packages/fsleyes/views/lightboxpanel.py rename to advanced_topics/02_modules_and_packages/fsleyes/views/lightboxpanel.py diff --git a/advanced_topics/modules_and_packages/fsleyes/views/orthopanel.py b/advanced_topics/02_modules_and_packages/fsleyes/views/orthopanel.py similarity index 100% rename from advanced_topics/modules_and_packages/fsleyes/views/orthopanel.py rename to advanced_topics/02_modules_and_packages/fsleyes/views/orthopanel.py diff --git a/advanced_topics/modules_and_packages/module_and_script.py b/advanced_topics/02_modules_and_packages/module_and_script.py similarity index 100% rename from advanced_topics/modules_and_packages/module_and_script.py rename to advanced_topics/02_modules_and_packages/module_and_script.py diff --git a/advanced_topics/modules_and_packages/numfuncs.py b/advanced_topics/02_modules_and_packages/numfuncs.py similarity index 100% rename from advanced_topics/modules_and_packages/numfuncs.py rename to advanced_topics/02_modules_and_packages/numfuncs.py diff --git a/advanced_topics/modules_and_packages/sideeffects.py b/advanced_topics/02_modules_and_packages/sideeffects.py similarity index 100% rename from advanced_topics/modules_and_packages/sideeffects.py rename to advanced_topics/02_modules_and_packages/sideeffects.py diff --git a/advanced_topics/modules_and_packages/strfuncs.py b/advanced_topics/02_modules_and_packages/strfuncs.py similarity index 100% rename from advanced_topics/modules_and_packages/strfuncs.py rename to advanced_topics/02_modules_and_packages/strfuncs.py diff --git a/advanced_topics/object_oriented_programming.ipynb b/advanced_topics/03_object_oriented_programming.ipynb similarity index 100% rename from advanced_topics/object_oriented_programming.ipynb rename to advanced_topics/03_object_oriented_programming.ipynb diff --git a/advanced_topics/object_oriented_programming.md b/advanced_topics/03_object_oriented_programming.md similarity index 100% rename from advanced_topics/object_oriented_programming.md rename to advanced_topics/03_object_oriented_programming.md diff --git a/advanced_topics/operator_overloading.ipynb b/advanced_topics/04_operator_overloading.ipynb similarity index 100% rename from advanced_topics/operator_overloading.ipynb rename to advanced_topics/04_operator_overloading.ipynb diff --git a/advanced_topics/operator_overloading.md b/advanced_topics/04_operator_overloading.md similarity index 100% rename from advanced_topics/operator_overloading.md rename to advanced_topics/04_operator_overloading.md diff --git a/advanced_topics/context_managers.ipynb b/advanced_topics/05_context_managers.ipynb similarity index 99% rename from advanced_topics/context_managers.ipynb rename to advanced_topics/05_context_managers.ipynb index 6a14f2e..b313229 100644 --- a/advanced_topics/context_managers.ipynb +++ b/advanced_topics/05_context_managers.ipynb @@ -16,7 +16,7 @@ "metadata": {}, "outputs": [], "source": [ - "with open('context_managers.md', 'rt') as f:\n", + "with open('05_context_managers.md', 'rt') as f:\n", " firstlines = f.readlines()[:4]\n", " firstlines = [l.strip() for l in firstlines]\n", " print('\\n'.join(firstlines))" diff --git a/advanced_topics/context_managers.md b/advanced_topics/05_context_managers.md similarity index 99% rename from advanced_topics/context_managers.md rename to advanced_topics/05_context_managers.md index 7c11d72..f32df44 100644 --- a/advanced_topics/context_managers.md +++ b/advanced_topics/05_context_managers.md @@ -5,7 +5,7 @@ The recommended way to open a file in Python is via the `with` statement: ``` -with open('context_managers.md', 'rt') as f: +with open('05_context_managers.md', 'rt') as f: firstlines = f.readlines()[:4] firstlines = [l.strip() for l in firstlines] print('\n'.join(firstlines)) diff --git a/advanced_topics/decorators.ipynb b/advanced_topics/06_decorators.ipynb similarity index 99% rename from advanced_topics/decorators.ipynb rename to advanced_topics/06_decorators.ipynb index a3f6dfc..8601e8b 100644 --- a/advanced_topics/decorators.ipynb +++ b/advanced_topics/06_decorators.ipynb @@ -541,13 +541,13 @@ "@limitedMemoize(5)\n", "def fib(n):\n", "\n", - " if n in (1, 2):\n", + " if n in (0, 1):\n", " print('fib({}) = 1'.format(n))\n", - " return 1\n", + " return n\n", "\n", " twoback = 1\n", " oneback = 1\n", - " val = 0\n", + " val = 1\n", "\n", " for _ in range(2, n):\n", "\n", diff --git a/advanced_topics/decorators.md b/advanced_topics/06_decorators.md similarity index 100% rename from advanced_topics/decorators.md rename to advanced_topics/06_decorators.md diff --git a/advanced_topics/README.md b/advanced_topics/README.md index d2e9d7e..3cd803e 100644 --- a/advanced_topics/README.md +++ b/advanced_topics/README.md @@ -9,10 +9,10 @@ some of the more advanced features of the language. Practicals on the following topics are available. They can be viewed in any order, but we recommend going through them in this order: -* Function inputs and outputs -* Modules and packages -* Testing -* Object-oriented programming -* Operator overloading -* Context managers -* Decorators +1. Function inputs and outputs +2. Modules and packages +3. Object-oriented programming +4. Operator overloading +5. Context managers +6. Decorators +7. Testing -- GitLab