diff -r d9507624eb8f -r 641a6ee868c0 writing_python_scripts/script.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/writing_python_scripts/script.rst Mon Oct 11 13:41:01 2010 +0530 @@ -0,0 +1,146 @@ +.. Objectives +.. ---------- + +.. Prerequisites +.. ------------- + +.. Author : Nishanth Amuluru + Internal Reviewer : + External Reviewer : + Checklist OK? : [2010-10-05] + +Script +------ + +Hello friends and welcome to the tutorial on "Writing Python scripts" + +{{{ Show the slide containing title }}} + +{{{ Show the slide containing the outline slide }}} + +In this tutorial, we shall learn + + * How write Python scripts + +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 +required in the script. + +Let us first write a function that computes the gcd of two numbers and save it +in a script. + +{{{ Open an editor and start typing out the following code }}} +:: + + def gcd(a, b): + + while b: + a, b = b, a%b + + return a + +We shall write an test function in the script that tests the gcd function every +time the script is run. + +{{{ Add to the script }}} + +:: + + if gcd(40, 12) == 4: + print "Everything OK" + else: + print "The GCD function is wrong" + +Let us save the file as script.py in /home/fossee/gcd_script.py + +We shall run the script by doing +:: + + $ python /home/fossee/gcd_script.py + +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 later 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. + +Open IPython and type +:: + + import sys + sys.path + +This is a list of locations where python searches for a module when it +encounters an import statement. + +hence when we just did =import sys=, python searches for a file named sys.py or +a folder named sys in all these locations one by one, until it finds one. + +We can place our script in any one of these locations and can import it. + +The first item in the list is an empty string which means the current working +directory is also searched. + +Alternatively, we can also import the module if we are working in same +directory where the script exists. + +Since we are in /home/fossee, we can simply do +:: + + import gcd_script + +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. + +This is possible by using =__name__= variable. + +First we shall look at how to use the idiom and then understand how it works. + +Go to the file and add +:: + + if __name__ == "__main__": + +before the test code and indent the test code. + +Let us first run the code. +:: + + $ python gcd_script.py + +We can see that the test runs successfully. + +Now we shall import the file +:: + + import gcd_script + +We see that now the test code is not executed. + +The __name__ variable is local to every module and it is equal to __main__ only +when the file is run as a script. + +hence all the code that goes after __name__ == "__main__" is executed only when +the file is run as a python script. + +{{{ Show summary slide }}} + +This brings us to the end of the tutorial. +we have learnt + + * What happens when we import a module + * How to use a script as a module + * How to write test functions using the __name__ idiom + +{{{ Show the "sponsored by FOSSEE" slide }}} + +#[Nishanth]: Will add this line after all of us fix on one. +This tutorial was created as a part of FOSSEE project, NME ICT, MHRD India + +Hope you have enjoyed and found it useful. +Thankyou +