summaryrefslogtreecommitdiff
path: root/writing_python_scripts/script.rst
diff options
context:
space:
mode:
Diffstat (limited to 'writing_python_scripts/script.rst')
-rw-r--r--writing_python_scripts/script.rst241
1 files changed, 207 insertions, 34 deletions
diff --git a/writing_python_scripts/script.rst b/writing_python_scripts/script.rst
index 0729efd..e537859 100644
--- a/writing_python_scripts/script.rst
+++ b/writing_python_scripts/script.rst
@@ -20,22 +20,51 @@
Script
------
-{{{ Show the slide containing title }}}
+.. L1
-Hello friends and welcome to the tutorial on "Writing Python scripts"
+{{{ Show the first slide containing title, name of the production
+team along with the logo of MHRD }}}
-{{{ Show the slide containing the outline slide }}}
+.. R1
-In this tutorial, we shall learn
+Hello friends and welcome to the tutorial on "Writing Python scripts".
- * How to write Python scripts
+.. L2
-Often we will have to reuse the code that we haave written. We do that by
-writing functions. Functions are bundled into packages and are imported as and
-when required in other scripts.
+{{{ Show the slide containing the objectives }}}
-Let us first write a function that computes the gcd of two numbers and save it
-in a script.
+..R2
+
+At the end of this tutorial, you will be able to,
+
+ 1. Understand what is importing.
+ #. Write your own Python modules.
+ #. Understand the ``__name__=="__main__"`` idiom
+
+.. L3
+
+{{{ Switch to the pre-requisite slide }}}
+
+.. R3
+
+Before beginning this tutorial,we would suggest you to complete the
+tutorial on "Using Python modules".
+
+.. R4
+
+Often we will have to reuse the code that we have written. We do that by
+writing functions. Functions are bundled into packages and are imported
+as and when required in other scripts.
+
+.. L4
+
+.. R5
+
+Let us first write a function that computes the gcd of two numbers and
+save it in a script.Open an editor and type the code.Please take care
+of the indentation.
+
+.. L5
{{{ Open an editor and start typing out the following code }}}
::
@@ -47,11 +76,14 @@ in a script.
return a
-We shall write a test function in the script that tests the gcd function every
-time the script is run.
+.. R6
+
+We shall write a test function in the script that tests the gcd function
+every time the script is run.
-{{{ Add to the script }}}
+.. L6
+{{{ Add the following lines to the script }}}
::
if gcd(40, 12) == 4:
@@ -59,26 +91,57 @@ time the script is run.
else:
print "The GCD function is wrong"
+.. L7
+
+{{{ Show slide containing GCD code }}}
+{{{ Keep open for sometime and then continue }}}
+
+.. R7
+
+.. R8
+
Let us save the file as script.py in ``/home/fossee/gcd_script.py``
+.. L8
+
+{{{ Save the script as ``gcd_script.py`` }}}
+
+.. R9
+
We shall run the script by typing
+
+.. L9
+
+{{{ Open a terminal }}}
::
- $ python /home/fossee/gcd_script.py
+ python /home/fossee/gcd_script.py
+
+.. R10
We can see that the script is executed and everything is fine.
-What if we want to use the gcd function in some of our other scripts. This
-is also possible since every python file can be used as a module.
+What if we want to use the gcd function in some of our other scripts.
+This is also possible since every python file can be used as a module.
But first, we shall understand what happens when you import a module.
+.. L10
+
+.. R11
+
Open IPython and type
+
+.. L11
+
+{{{ Open another terminal and type ipython }}}
::
import sys
sys.path
+.. R12
+
This is a list of locations where python searches for a module when it
encounters an import statement.
@@ -94,40 +157,83 @@ working directory is also searched.
Alternatively, we can also import the module if we are working in same
directory where the script exists.
+.. L12
+
+.. L13
+
+{{{ Close the current terminal }}}
+
+.. R13
+
+.. R14
+
Since we are in /home/fossee, we can simply do
+
+.. L14
+
+{{{ Switch to the first terminal }}}
::
- import gcd_script
+ import gcd_script.py
+
+.. R15
-We can see that the gcd_script is imported. But the test code that we added at
-the end of the file is also executed.
+We can see that the gcd_script is imported. But the test code that we
+added at the end of the file is also executed.
-But we want the test code to be executed only when the file is run as a python
-script and not when it is imported.
+But we want the test code to be executed only when the file is run as
+a python script and not when it is imported.
This is possible by using ``__name__`` variable.
-First, we shall look at how to use the idiom and then understand how it works.
+First, we shall look at how to use the idiom and then understand how
+it works.
+
+.. L15
+
+.. L16
+
+{{{ Switch to slide, __name__ variable }}}
-Go to the file and add
+.. R16
+
+Go to the file and add this line as the beginning of the code
+and indent the code accordingly.
+
+.. L17
+
+{{{ Switch to gcd_script.py and add this line after the
+ line ``return a`` }}}
::
if __name__ == "__main__":
-
-before the test code and indent the test code.
+
+.. R17
+.. R18
+
Let us first run the code.
+
+.. L18
+
+{{{ Switch back to the terminal }}}
::
- $ python gcd_script.py
+ python gcd_script.py
+
+.. R19
We can see that the test runs successfully.
Now we shall import the file
+
+.. L19
::
import gcd_script
+.. R20
+
We see that now the test code is not executed.
The ``__name__`` variable is local to every module and it is equal to
@@ -137,19 +243,86 @@ Hence, all the code that goes in to the if block, ``if __name__ ==
"__main__":`` is executed only when the file is run as a python
script.
+.. L20
+
+.. L21
+
{{{ Show summary slide }}}
-This brings us to the end of the tutorial.
-we have learnt
+.. R21
+
+This brings us to the end of the tutorial.In this tutorial, we have
+learnt to,
+
+ 1. Know what happens when we import a module.
+ #. Use a script as a module.
+ #. Write test functions using the ``__name__`` idiom.
+
+.. L22
+
+{{{Show self assessment questions slide}}}
+
+.. R22
+
+Here are some self assessment questions for you to solve
+
+1. Which of the following variables contains the locations to search for
+ python modules
+
+ - sys.pythonpath
+ - sys.path
+ - os.pythonpath
+ - os.path
+
+
+2. A module should contain only functions.
+ - True
+ - False
+
+
+3. The script ``utils.py`` is in one of locations of PYTHONPATH and
+ contains the following code
+::
+
+ def show(x):
+ print x
+
+ show("Hello World")
+
+ if __name__ == "__main__":
+
+ show("Hello Test")
+
+ How do you use the ``show`` function after doing ``import utils``
+
+ - utils.show("hey")
+ - show("hey")
+ - utils.py.show("hey")
+ - utils.py.show.py("hey")
+
+.. L23
+
+{{{solution of self assessment questions on slide}}}
+
+.. R23
+
+And the answers,
+
+1. ``sys.path`` contains the locations to search for python modules.
+
+2. False. A module can contain a wide range of functions.
+
+3. After doing ``import utils``, we can use the function ``show()`` as,
+::
+
+ utils.show("hey")
- * What happens when we import a module
- * How to use a script as a module
- * How to write test functions using the __name__ idiom
+.. L24
-{{{ Show the "sponsored by FOSSEE" slide }}}
+{{{ Show the Thank you slide }}}
-This tutorial was created as a part of FOSSEE project, NME ICT, MHRD India
+.. R24
-Hope you have enjoyed and found it useful.
+Hope you have enjoyed this tutorial and found it useful.
Thank you!