Python Phrase Book
Contents
Python Phrase Book¶
The first thing we should do is become familiar with the shape and feel of python code because we can’t really discuss the features of python without a few examples. So here is a little phrase book …
Aside
The Python name derives from Monty Python’s Flying Circus which means you should be alarmed at the mention of a Phrase Book
Obligatory Hello world program¶
# Print out the "Hello World" message
print("Hello World")
>>>
Hello World
There is no set up needed to run this simple example because the print
command is built into python.
It is actually implemented as a function that displays its argument to the screen, so now you know what python functions look like ! You can also see how to write a comment.
Here are a couple of other ways to do the same thing
hello_world_string = "Hello World"
print(hello_world_string)
# Formatting output is also possible (cf c `printf` formats)
print("-- {:s} --".format(hello_world_string))
>>>
Hello World
Hello World
We can assign the message to a variable and print that directly. The print
function does not need to be told that hello_world_string
is a string (and the fact that the name has the word string in it is neither here nor there). Variable names are allowed to have underscore characters in them, letters and numbers (other than the first character, that can’t be a number). underscores at the beginning of a variable are conventionally “hidden” which actually just means they are a bit harder to find in an interactive environment.
Note
In fact, the string is a python object that understands that it may need to be printed and will respond appropriately to the print function’s call. The format
function is also part of the repertoire of the string object and we will see this object.function
way of accessing the “methods” of an object very, very often.
Indentation and block structure¶
python
uses indentation to define code blocks and will complain when the indentation is broken. This is important for defining functions, conditional statements, loops and so on:
Loops and if statements¶
for i in range(0,5):
print("The value of i is {} ".format(i), end=" ")
if i%2:
print("which is an odd number")
else:
print("which is an even number")
This has the layout of a typical python code - the blocks that make up a loop or the branches of conditions are defined by the indentation. Easy if the code is short, much harder to follow if you cram too much into a block.
Functions¶
def my_first_function(argument1, argument2):
"""This is the "help" for a function a.k.a. docstring. This particular function returns
its first argument"""
# indent the function definition
return(argument1)
print(my_first_function(1,2))
print(my_first_function("Hello world", 0))
help(my_first_function)
>>>
1
Hello world
Help on function my_first_function in module __main__:
my_first_function(argument1, argument2)
This is the "help" for a function a.k.a. docstring. This particular function returns
its first argument
def my_second_function(argument1, argument2):
"""Function returns both arguments"""
# indent the function definition
return(argument1, argument2)
print(my_second_function(1,2))
print(my_second_function("Hello world", 0))
help(my_second_function)
a,b = my_second_function(1,2)
print(a)
print(b)
>>>
(1, 2)
('Hello world', 0)
Help on function my_second_function in module __main__:
my_second_function(argument1, argument2)
Function returns both arguments
1
2
Functions can return many arguments and they come back as a tuple. It is straightforward to unpack the values that are returned (the last example above).
Note
Since python
is an interpreted language, you must define functions before they are encountered in the code. That inverts the way many people write their code with the subroutines defined after the logic of the code is laid out. Instead, python
uses modules to organise collections of code that are defined outside the main flow of the code.
Modules¶
The power of python
is probably in the way it encourages sharing and builds a community of users. Before we can do much with python
, we generally need to import
the modules with the extra functionality we need. The print
function is unusual in not needing to be imported, nearly everything else we want to do needs an import
first
For example, the standard python library comes with modules for basic file system operations, string manipulation, mathematical functions, spawning processes … and so on. The full list is in the python documentation. These capabilities are provided (if you have downloaded python, you have these modules) but are not automatically activated.
Here are a couple of examples:
import math
print(math.sin(math.pi/2))
print(math.cos(math.pi/2))
>>>
1.0
6.123233995736766e-17
See how the module.function
works.
Sometimes, you just want to import a few bits and pieces and you can save some
typing by importing those functions at the base level - they can then be used without referencing the module name (if the names do not clash, of course, and provided you remember to import everything you need !)
from math import sin, pi
print(sin(pi/2))
print(cos(pi/2))
>>>
1.0
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-7-2b3c4d0b7471> in <module>
4
5 #
----> 6 print(cos(pi/2))
NameError: name 'cos' is not defined
You can change the names when you import to avoid clashes. Here is an example using cmath
which is the complex math library complementary to the standard (real numbers) math library.
from math import sin, pi
from cmath import sin as csin
print(sin(pi/2))
print(csin(pi/2))
>>>
1.0
(1+0j)
If it makes sense to you, import modules under a different name too
import math as real_math
import cmath as complex_math
print(real_math.sin(real_math.pi))
Parlez-vous Python / Beszélsz pythonban ?¶
Not yet !
But now you should have some sense of what a python code looks like and why it will break if you type the wrong number of spaces and how dots are used to denote a hierarchy. Next we can take a look at the different types of data in python and then go on to explore how data and functions are bundled together in python objects. All the while, it is fine to dip in to the step-by-step examples.
But it would be useful for us to be able to try out examples and for that, we will want to use live documents and jupyter notebooks.