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 94994e265b660d37af3ddc9074bf3ebf5aab40ab..b49f0e5a1d7ce99ed66f00bc1b21c62fd5af88ed 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 16dfca6a785cd358333f5567856b7da5b2161f99..1fdccb84963ead3deb0305324be0bb793a3b10ff 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 6a14f2ee9420f043d76a7202a639bfebd4119234..b3132296bd71579cca82a4300f6828fa3b4d290f 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 7c11d727a43da33af1eb702e015580794ace7bfa..f32df447f8ed065e58cf6c72cf201f98f3b674a9 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 a3f6dfc3efc7f2faccc5e5f558ac3fdf17112a76..8601e8b2df6163bd508efb0ead93744a4c604a09 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 d2e9d7e5eb7a181a7ae4ae76dc025608f509a9ba..3cd803e8786886f2c4396012710f84591e4073c1 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