introduction to
DESCRIPTION
Introduction to. What is Python?. Dynamic, interpreted high-level language. Created in 1991 by Guido van Rossum. Design philosophy: Short development time is prioritized over excecution speed. Syntax similar to C++ or Java. Facts about Python. Portable, available for all common platforms. - PowerPoint PPT PresentationTRANSCRIPT
![Page 2: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/2.jpg)
What is Python?
• Dynamic, interpreted high-level language.• Created in 1991 by Guido van Rossum.• Design philosophy: Short development time is prioritized
over excecution speed.• Syntax similar to C++ or Java.
![Page 3: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/3.jpg)
Facts about Python
• Portable, available for all common platforms.• Python is Open Source and free to use, even for
commercial applications.• (Relatively) Easy to integrate with other languages, such as
Java, C/C++, Fortran and .NET.• Designed for multiple paradigms. Both object oriented and
procedural programming are possible.
![Page 4: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/4.jpg)
What is Python good for?
• Internet applications, good support for HTTP, FTP, SMTP and CGI.
• Integrating components written in a low-level language, “glue code”.
• Portable system tools, same commands on each platform. Compare with dir (Windows) and ls (Linux).
• Portable GUI:s.• Database handling. • Projects where time of development is more important than
speed of execution.
![Page 5: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/5.jpg)
What is Python not good for?
• Tasks where performance is critical.• Such tasks can be implemented in C/C++ modules using tools such as SWIG (www.swig.org).
![Page 6: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/6.jpg)
Python and VTK
• VTK is written in C++, but has bindings to Python, Java, Tcl ...
• For this workshop, we will use VTK with Python.
![Page 7: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/7.jpg)
The Python prompt
• Can be used to execute individual Python commands interactively.
• The prompt has a “memory” which is kept until the prompt is closed.
• Start the prompt by typing python in a terminal.
![Page 8: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/8.jpg)
The Python language
• Variables and types• Control structures• Functions• Classes• File handling
![Page 9: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/9.jpg)
Variables
•All variables in Python are references
Variable Data
![Page 10: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/10.jpg)
Variable names
•May contain english letters, numbers and underscores.
• Must not start with a number.
Invalid names
påskmust1_varnamevarname 1var&name
Valid names
varnamevArNaMe1var_name_1_var_name
![Page 11: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/11.jpg)
Variable assignment
•A reference is created with= a = 10b = 20c = a + b
a 10
b 20
c 30
Creates the following situation:
![Page 12: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/12.jpg)
More on references
•Multiple references: Many variables can refer to the same object.
•Reference counting: An object is deleted automatically when no variables refer to it.
list_a [1, 2, 3]
list_b
list_c
>>> list = [1, 2, 3]>>> list_a = [1, 2, 3]>>> list_b = list_a>>> list_c = list_b>>> list_c[2] = 78>>> list_a[1, 2, 78]
![Page 13: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/13.jpg)
Datatypes
• Numbers• Strings• Boolean types• Lists• Tuples• Others...
![Page 14: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/14.jpg)
Numbers
•Different kinds of numbers are represented by different classes:
Integers (int) Big integers (long) Real numbers (float) Complex numbers (complex)
>>> a = 10>>> a.__class__<type 'int'>>>> big_num = 9875628736L>>> big_num.__class__<type 'long'>>>> pi_constant = 3.1415>>> pi_constant.__class__<type 'float'>>>> z = complex(3.4, 8.35)>>> z(3.399999999+8.349999999j)>>> z.__class__<type 'complex'>
![Page 15: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/15.jpg)
Operations on numbers
• The operations +, -, * and / work as usual.
• % - Remainder // - Integer division ** - Power• abs(x) int(x) long(x) float(x) complex(a, b)
>>> a = 3.14>>> b = 5>>> c = b / a>>> c.__class__<type 'float'>>>> 5 // 22>>> 5 // float(2)2.0>>> 5 / float(2)2.5>>> b / complex(6, 4)(0.576923072-0.384615381j)>>> 2 / 30
![Page 16: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/16.jpg)
Strings
• A string is a sequence of characters.
• A string is created using single or double quotes.
>>> s1 = "exempeltext">>> s2 = 'exempeltext igen'>>> s3 = "felaktigt'
File "<stdin>", line 1s3 = "felaktigt'
^SyntaxError: EOL while scanningsingle-quoted string>>> s4 = s1 + s2>>> s4'exempeltextexempeltext igen'>>> s5 = str(3)>>> s5'3'>>> s5.__class__<type 'str'>
![Page 17: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/17.jpg)
Boolean types
• The following expressions are false:NoneFalseThe number 0Every empty sequenceEvery empty mapping {}
• All other objects are (somewhat simplified) defined to be true.
>>> a = True>>> a.__class__<type 'bool'>>>> a = 5 > 7>>> aFalse
![Page 18: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/18.jpg)
Lists
• Lists are containers with an arbitrary number of elements.
• The elements can be any Python object. A single list can contain objects of many different types.
>>> list = [1, 2, 3]>>> list[1, 2, 3]>>> list_2 = [1, "mixed","li"+"st"]>>> list_2[1, 'mixed', 'list']
![Page 19: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/19.jpg)
More on lists
• Individual element are accessed with an index within square brackets [index]. The first element has index 0.
>>> list_2[1, 'blandad', 'lista']>>> list_2[1]'blandad'>>> list_2[1] = "Nytt element">>> list_2[1, 'Nytt element', 'lista']
![Page 20: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/20.jpg)
Tuples
• Tuples are static lists.• Tuples have better performance than lists, but are less flexible.
>>> tuple_1 = (1, 2, 3)>>> tuple_2 = (1, "mixed")>>> tuple_2[1]'mixed'>>> tuple_2[1] = "New element"Traceback (most recent call last):
File "<stdin>", line 1, in <module>TypeError: 'tuple' object does not support itemassignment
![Page 21: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/21.jpg)
Printing
• The Python command for writing text to the prompt is print.
>>> print "Hello"Hello>>> print "Hello", "world"Hello world>>> print 10+313
![Page 22: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/22.jpg)
If-statements
• Note the indentation! In Python, indentation is used to control which block a statement belongs to. A colon indicates that a new block of code begins.
>>> a = 10>>> if a > 5:... print "The number is greater than 5"...The number is greater than 5
![Page 23: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/23.jpg)
else
>>> a = 10>>> if a < 5:... print "a is less than 5"... else:... print "a is greater than or equal to 5"...a is greater than or equal to 5
![Page 24: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/24.jpg)
Multiple choices
• Multiple choices are handled with elif.• Many languages have a case-statement for handling multiple choices. This was deemed redundant by the Python developers.
>>> a = 10>>> if a == 1:... print "a is one"... elif a == 2:... print "a is two"... elif a == 3:... print "a is three"... else:... print "a is something else"...a is something else
![Page 25: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/25.jpg)
for-loops
• Again, use indentation to define a block of code. >>> for i in range(10):
... print i
...0123456789
![Page 26: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/26.jpg)
Nested loops
>>> for i in range(2):... for j in range(3):... for k in range(4):... print "i=%i, j=%i, k=%i" % (i, j, k)...i=0, j=0, k=0i=0, j=0, k=1i=0, j=0, k=2i=0, j=0, k=3i=0, j=1, k=0i=0, j=1, k=1...i=1, j=1, k=2i=1, j=1, k=3i=1, j=2, k=0i=1, j=2, k=1i=1, j=2, k=2i=1, j=2, k=3
![Page 27: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/27.jpg)
Beyond the Python prompt
• The python prompt is not suited for larger programs.
• Python programs are stored in regular text files.
• Commonly the filenames end with .py, but this is not required.
![Page 28: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/28.jpg)
Executing Python programs
• Python files are executed using the python command.
• The search path to this program must be set.
• On windows, this is set by the system variable PYTHONPATH.
![Page 29: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/29.jpg)
Python is dynamically typed
# -*- coding: utf-8 -*-# a refers to a numbera = 10print a, a.__class__# a refers to a stringa = "lkshjdglgv"print a, a.__class__# a refers to a lista = [5, 2, 8, 5]print a, a.__class__a.sort()# a refers to a number againa = 10a.sort()
$> python dynamic_binding.py10 <type 'int'>lkshjdglgv <type 'str'>[5, 2, 8, 5] <type 'list'>Traceback (most recent call last):File "dynamic_binding.py", line 18, in<module>a.sort()AttributeError: 'int' object has noattribute 'sort'
Duck Typing:
"when I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck."
![Page 30: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/30.jpg)
Python is strongly typed
• No implicit type conversions
>>> a = 3>>> b = '4'>>> a + bTraceback (most recent call last):
File "<stdin>", line 1, in <module>TypeError: unsupported operand type(s)for +: 'int' and 'str'>>> str(a) + b'34'>>> a + int(b)7
![Page 31: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/31.jpg)
Functions in Python
• A function is create using the reserved word def followed by the function name and a colon.
• The rules for function names are the same as for variable names.
# function_01.py
def function_a():print "Detta skrivs inuti funktionen."
print "Detta skrivs först."function_a() # Funktionen anropasprint "Detta skrivs efter metodanropet."
$> python function_01.pyDetta skrivs först.Detta skrivs inuti funktionen.Detta skrivs efter metodanropet.
![Page 32: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/32.jpg)
Function arguments
•We communicate with functions by specifying arguments in the function call.
# function_02.py
def greeting(name, age):print """Hej %s. Du är %i år gammal.""" % (name, age)
greeting("Maja", 23)greeting("Pelle", 31)
$> python function_02.pyHej Maja. Du är23 år gammal.Hej Pelle. Du är31 år gammal.
![Page 33: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/33.jpg)
Default arguments
•Default arguments can be used to avoid having to specify all arguments.
# function_03.py
def greeting(name, age=20):print """Hej %s. Du är %i år gammal.""" % (name, age)
greeting("Maja", 23)greeting("Pelle")
$> python function_03.pyHej Maja. Du är23 år gammal.Hej Pelle. Du är20 år gammal.
![Page 34: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/34.jpg)
Order of arguments
•Problems with many arguments: Arguments must be given in the order given in the function defintion.
# function_04.py
def greeting(name="Unknown", age=20):print """Hello %s. You are %i years old.""" % (name,
age)
greeting()greeting("Pelle")greeting(45) # Gives the wrong result
$> python function_04.pyHello Unknown. You are 20 years old.Hello Pelle. You are 20 years old.Hello 45. You are 20 years old.
![Page 35: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/35.jpg)
Arguments by name
• The solution is to give arguments by name.
# function_05.py
def greeting(name="Okänd", age=20):print """Hej %s. Du är %i år gammal.""" % (name, age)
greeting()greeting("Pelle") # Still worksgreeting(name="Pelle") # Eqvivalentgreeting(age=45) # Gives the right resultgreeting("Maja", 33)greeting(name = "Maja", age = 33) # Eqvivalent
$> python function_05.pyHej Okänd. Du är 20 år gammal.Hej Pelle. Du är 20 år gammal.Hej Pelle. Du är 20 år gammal.Hej Okänd. Du är 45 år gammal.Hej Maja. Du är 33 år gammal.Hej Maja. Du är 33 år gammal.
![Page 36: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/36.jpg)
Return values
•The return statement is used to return a value from a function.
# return_values_01.py
def my_own_join(texts, separator=" "):s = ""for text in texts:
s += text + separators = s[:-len(separator)] + "."
return s
my_text_pieces = ["Detta", "är", "inte","så", "meningsfullt"]print my_own_join(my_text_pieces, "_")
$> python return_values_01.pyDetta_är_inte_så_meningsfullt.
![Page 37: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/37.jpg)
Multiple return values
• Python allows any number of return values.
# return_values_03.pydef min_max(seq):
return min(seq), max(seq)
a = [3, 573, 234, 24]minimum, maximum = min_max(a)print minimum, maximumresult = min_max(a)print resultprint result.__class__
$> python return_values_03.py3 573(3, 573)<type 'tuple'>
![Page 38: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/38.jpg)
Modules
•When writing larger programs, it is not practical to keep all code in the same file.
• In python Modules offer a way to separate large programs into smaller units.
•Modules are also used to organize functions and variables into namespaces.
![Page 39: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/39.jpg)
Standard modules
•Python has a number of standard modules that are always available for import.
•Modules are imported with the import-statement.
>>> sysTraceback (most recent call last):File "<stdin>", line 1, in <module>NameError: name 'sys' is not defined>>> import sys>>> sys<module 'sys' (built-in)>>>> sys.version'2.4.3 (#1, Dec 11 2006, 11:39:03) \n[GCC 4.1.1 20061130 (Red Hat 4.1.1-43)]'
![Page 40: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/40.jpg)
3rd party modules
• Lots of freely available modules for:– GUI:s– Image Processing– Computer Graphics– Web development– Numerical Computations– ...
![Page 41: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/41.jpg)
Object oriented programming
• Python is originally a procedural language, with added support for object orientation.
• Classes are defined using the class keyword:
# -*- coding: utf-8 -*-# io_01.py
class MyClassMyNumer=10def printNumber(self):
print 'The number is ',MyNumber
#Now we use the classanObject=MyClass()anObject.printNumber()
![Page 42: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/42.jpg)
Object oriented programming
• Python is originally a procedural language, with added support for object orientation.
• Classes are defined using the class keyword:
# -*- coding: utf-8 -*-# io_01.py
class MyClass:MyNumer=10def printNumber(self):
print 'The number is ',MyNumber
#Now we use the classanObject=MyClass()anObject.printNumber()
![Page 43: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/43.jpg)
Private variables
• Python has limited support for private class variables.
• Variable names starting with two underscores (“__”) are considered private.
• If you really want to, it is still possible to access those variables from outside the class.
![Page 44: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/44.jpg)
File I/O in python
• Files are opened with the open statement
# -*- coding: utf-8 -*-# io_01.py
f = open("newfile.txt", "r") # Öppna filenprint f.read() # Läs in hela filen
“r” -read only“w”- write only“r+” - read and write“a” - append data at the end of the file“b”- binary file
![Page 45: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/45.jpg)
Reading parts of a file
# -*- coding: utf-8 -*-# io_01.py
f = open("newfile.txt")for row in f.readlines():
print row,
f.close()f = open("newfile.txt")print f.read(8)print f.read(5)
$> python io_02.pyDetta är textrad 1.Detta är textrad 2.Detta är textrad 3.Detta är textrad 4.Detta är text
![Page 46: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/46.jpg)
Writing to a file
# -*- coding: utf-8 -*-# io_03.py
f = open("newfile.txt", "w")f.write(str(3) + "\n")f.write(str([1,2,3]) + "\n")f.write(str({"name":"Kalle"}) + "\n")f.close()
f = open("newfile.txt", "a")f.write("Denna rad läggs till.")f.close()
f = open("newfile.txt")print f.read()f.close()
$> python io_03.py3[1, 2, 3]{'name': 'Kalle'}Denna rad läggs till.
![Page 47: Introduction to](https://reader035.vdocuments.us/reader035/viewer/2022062410/56815a65550346895dc7ac19/html5/thumbnails/47.jpg)
That's it!
• Now you know the basics• More info: www.python.org