An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to...
Transcript of An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to...
![Page 1: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/1.jpg)
An Introduction to Python
Presented to OCPython, 2014-04
![Page 2: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/2.jpg)
Why Learn Python: Part 1 of 3
•Easy to learn yet powerful•Concise syntax: few words per idea
expressed•Usable for web, scripts, full blown standalone
applications•Runs on all major operating systems
![Page 3: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/3.jpg)
Why Learn Python: Part 2 of 3
•No type declarations to speak of•Friendly, helpful community
•The language is very "googleable"
![Page 4: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/4.jpg)
Why Learn Python: Part 3 of 3
•Small core language•One needn't learn a lot to become productive
•Large set of reusable modules available•Doing well in the PYPL index
![Page 5: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/5.jpg)
Paradigms
●Procedural●Object Oriented
●Functional (to an extent)
![Page 6: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/6.jpg)
Major Implementations
CPythonPypy
JythonIronPython
![Page 7: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/7.jpg)
CPython
●Latest versions 2.7 and 3.4●Written in C
●Has its own byte code●Can sort of JIT with Psyco on x86
●The Reference Implementation
![Page 8: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/8.jpg)
Pypy
●Version 2.2 implements Python 2.7.3●Written in Python
●JIT available●Can use C or .Net as backends
●A 3.x beta is available
![Page 9: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/9.jpg)
Jython
●Written in Java●Version 2.5 is Python 2.5
●JIT's●Runs on the JVM
●A 2.7 beta is available
![Page 10: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/10.jpg)
IronPython
●Written in C#●Version 2.7 is Python 2.7
●JIT's●Runs on .Net
●Doesn't have much of a python standard library
![Page 11: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/11.jpg)
Nouns and verbs
●Nouns: “data”●Verbs: “operators”, “control flow”, “functions”,
“methods”
![Page 12: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/12.jpg)
The simplest control flow: sequential execution
print 'hello world'print 'how are you?'
print 'goodbye'# Like a recipe or chemistry experiment
![Page 13: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/13.jpg)
(Scalar) types: Part 1 of 2
●int: whole number●long: potentially large whole number (2.x only)
●float: whole number or fraction ●bool: logic 101 truth values
●None: special value representing “nothing”●str: a sequence of characters
![Page 14: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/14.jpg)
(Collection) types: Part 2 of 2
●list: a read/write sequence●tuple: a readonly sequence
●dict: like a dictionary or “hash” ●set: from set theory
●file: a sequence of bytes or characters, usually on disk
![Page 15: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/15.jpg)
Example Python 2.x int literals
01
999999
![Page 16: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/16.jpg)
Example int, long and float operators
Addition: +Subtraction: -
Multiplication: *Integer (2.x) or float (3.x) division: /Integer division (both 2.x and 3.x): //
Modulus: %Exponentiation: **
![Page 17: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/17.jpg)
Example use of int
print(1+2)# prints 3
print(5**2)# prints 25
![Page 18: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/18.jpg)
Example long literals in Python 2.x
1L65535L
68056473384187692692674921486353642L
![Page 19: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/19.jpg)
Int vs. long in Python 2.x vs 3.x
●In Python 2.x, small integers are int's, and big integers are long's
●In Python 3.x, all integers are called int's, but actually look like 2.x's long's behind the scenes
●In 3.x, the “L” suffix is never used
![Page 20: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/20.jpg)
Example float literals
1.03.141591.5e20
![Page 21: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/21.jpg)
Example use of float
Print(3.14159)# prints 3.14159
Print(2/9)# prints 0.222222222222
Print(1.5e20)# prints 1.5e+20
![Page 22: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/22.jpg)
bool literals
TrueFalse
![Page 23: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/23.jpg)
Example bool operators
andornot
![Page 24: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/24.jpg)
Common operators returning bool
Less than: < Less than or equal to: <= Greater than: > Greater than or equal to: >= Equal to: == Not equal to: !=
![Page 25: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/25.jpg)
Example use of bool
print(not True)# prints False
Print(1 < 3)# prints True
print(True and False)# prints False
Print(True or False)# prints True
![Page 26: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/26.jpg)
None literal
None
![Page 27: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/27.jpg)
Quick aside: variables
When you want a variable to have a value, you just assign it with =
x = 5y = True
z = 2.71828
![Page 28: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/28.jpg)
An analogy for understanding variables
●Could be thought of as a sticky label you can place on a value
●They just assign a name to a value
![Page 29: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/29.jpg)
Variables' degree of permanence
●Unlike in mathematics a variable, once assigned, does not necessarily retain that value
forever.●A subsequent assignment to the same variable changes its value, and possibly its type as well.
![Page 30: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/30.jpg)
Example of changing a variable
x = 5print(x)
# prints 5
x = 10print(x)
# prints 10; the previous 5 is lost
![Page 31: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/31.jpg)
Example None operators
x == None
y is None
![Page 32: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/32.jpg)
Example Python 2.x str literals
'abc'“def”
'ghi”jkl'“mno'pqr”
u'αβγ'
![Page 33: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/33.jpg)
Python 3.x str literals
'abc'“def”
'ghi”jkl'“mno'pqr”
'αβγ'
...all str's are unicode in 3.x.
![Page 34: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/34.jpg)
Example str operators
Catenation: +Repetition: *
Slicing
![Page 35: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/35.jpg)
Example use of str's
print 'abc' + “def”# prints abcdef
print 'ghi' * 3# prints ghighighi
print 'abcdefghi'[3:6]# prints def
![Page 36: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/36.jpg)
More on str slicing
print string[x,y] says:print characters x through y-1
The leftmost character is character number zero
print '0123456789'[2:5]# prints 234
![Page 37: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/37.jpg)
Slicing with negative values
A negative number in a slice says “from the end”
string='abcdefghi'print string[3:-2]
# prints defg
![Page 38: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/38.jpg)
Example list literals
[][1]
[1, 2, 3, 4][20, 15, 5, 0]
![Page 39: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/39.jpg)
Some other ways of getting a list: Python 2.x
print(range(3)) # prints [ 0, 1, 2 ]
print(range(5, 10)) # prints [ 5, 6, 7, 8, 9 ]
![Page 40: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/40.jpg)
Example list operators
Slicinglist_.sort()
Catenation: +list_.appendlist_.extend
![Page 41: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/41.jpg)
Lists defined
●A list is a collection of (potentially) many values, kept in order, indexed by whole numbers from 0 to num_values-1●They are similar to arrays in many other languages, but are very flexible compared to arrays in C (another programming language)●Modifying the end of a list is fast; modifying the beginning of a list can be slow
![Page 42: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/42.jpg)
(More) example list operators
Indexing: list_[5]Slicing: list_[5, 10]
list_.append(5)del list_[5]list_.pop()
Comparison operators: <, ==, >=, etc.len(list_)
![Page 43: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/43.jpg)
A note on strings
# This is sometimes quadratic (slow): string = '' for i in range(10000): string += str(i)
# This is linear (fast): list_ = [] for i in range(10000): list_.append(i) string = ''.join(list_)
![Page 44: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/44.jpg)
Some brief notes about tuples
●Tuples are like lists, except they're readonly, and their literals use (), not []
●The main exception is that a tuple with a single element is written (1,) - for example
●It's unfortunately easy to end up with a tuple by writing x = 1,
![Page 45: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/45.jpg)
Dictionaries Defined
●Are similar to a real-world dictionary on one's bookshelf
●Are like a “hash” or “map” or “associative array” in some other languages
●Are a collection of (potentially) many variables, that facilitate easily finding where you put
something previously●Are indexed by immutable values and can store
mutable or immutable values
![Page 46: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/46.jpg)
Examples of dictionary literals
{}{ 'a': 'abc', 'b': 'bcd' }
{ 1: 'xyz', 2112: 'pdq', 'string': 5.0 }
![Page 47: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/47.jpg)
Example use of a dictionary
d = {} d[0] = 1 d[1] = 2 d[2] = 4 d[3] = 8 d[4] = 16 d[5] = 32 print(d[0]) # prints 1 print(d[4]) # prints 16
![Page 48: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/48.jpg)
(Further) example operations on dictionaries
len(dict_)d1.update(d2)
2.x: dict_.keys()3.x: dict_
dict_.values()dict_.items()
==!=
![Page 49: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/49.jpg)
Operations on dictionaries: Python 2.x vs 3.x
●In 2.x, .keys(), .values(), and .items() return lists●In 3.x, they return iterators, achieving lazy
evaluation●In 2.x, for an iterator, you must use .iterkeys(),
.itervalues() and .iteritems()●If you don't know the difference, you're probably
better off with an iterator than a list; they're mostly interchangeable
●To change an iterator to a list, just use list(iterator)
![Page 50: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/50.jpg)
Suitability of Dictionary Keys
●Dictionary keys must be immutable (readonly) values
●So you cannot index a dictionary by a list, but you can index a dictionary by a tuple
●You can still put pretty much anything you want into a dictionary as a value; it's keys that are
restricted
![Page 51: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/51.jpg)
Sets defined
(From wikipedia): A set is a collection of distinct objects, considered as an object in its own right. Sets are one of the most fundamental concepts
in mathematics.
![Page 52: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/52.jpg)
Sets compared to dictionaries
●Sets are a lot like dictionaries minus the values – all they have are the keys
●No key-value pairs
![Page 53: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/53.jpg)
Creating sets
2.7 and up: { 'a', 'b', 'c' }2.4, 2.5, 2.6, perhaps earlier: set(['a', 'b', 'c'])
![Page 54: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/54.jpg)
Example set operations
Cardinality (number of members): len(s1)Intersection: s3 = s1 & s2
Union: s4 = s1 | s2Difference: s5 = s1 – s2
![Page 55: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/55.jpg)
Comparing sets
Equality: s1 == s2Inequality: s1 != s2Subset: s1 <= s2
Proper subset: s1 < s2Superset: s1 >= s2
Proper superset: s1 > s2
![Page 56: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/56.jpg)
Definition of files
A sequence of characters or bytes, typically in a filesystem on disk
![Page 57: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/57.jpg)
Examples of files
A spreadsheet .ods or .xlsA text file .txt
A python file .pysys.stdoutsys.stderrsys.stdin
![Page 58: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/58.jpg)
Common file operations: reading
file_ = open('file.txt', 'r')file_.read(10)file_.readline()
file_.close()
![Page 59: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/59.jpg)
Common File Operations: Writing
file_ = open('file2.txt', 'w')file_.write('line of text\n')
file_.close()
![Page 60: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/60.jpg)
Python's type system
●pretty strong typing: few implicit conversions●bool might be implicitly promoted to int
●int (or long) might be implicitly promoted to float●Almost anything is usable in a boolean context
![Page 61: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/61.jpg)
Explicit type conversions
Usually if you want to convert a variable x to type t and save it in variable y: y = t(x)
Examples:●y = int('1')
●y = float(5)●y = str(1/9.0)
![Page 62: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/62.jpg)
Modules
●Modules are the main way Python encourages code reuse
●Modules are also an important way of keeping the core language small
![Page 63: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/63.jpg)
Example of reusing a module
import decimal variable1 = decimal.Decimal(6) variable2 = decimal.Decimal('0.33') variable3 = variable1 * variable2 print(variable3) # prints 1.98
![Page 64: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/64.jpg)
What are decimals?
●An arithmetic type similar to float's●Stored base 10 rather than float's base 2
●Slower than float●More precise than float if used with
human-readable, base 10 inputs●Nice for accounting applications
![Page 65: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/65.jpg)
More modules in the standard library
sys, os, os.path, collections, re, struct, StringIO, time, heapq, bisect, array, copy, pprint, math, itertools, functools, operator, anydbm, gdbm,
dbhash, bsddb, gzip, bz2, zlib, zipfile, tarfile, csv, hashlib, ctypes, select, multiprocessing, mmap,
subprocess, socket, ssl, xml: sax, dom, elementtree, signal, email, json, cgi, urllib,
httplib, profile, parser...
![Page 66: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/66.jpg)
Discoverability
● python● import decimal● help(decimal)● dir(decimal)
![Page 67: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/67.jpg)
Creating your own modules●Place the following in a file named foo.py and
put it somewhere on your Python path (described by sys.path) or in “.”:
#!/usr/bin/python print 'hello'
●And then in some other python file, you print the word “hello” with:
import foo
![Page 68: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/68.jpg)
Getting an intuition for control flow
Winpdb! (or something like it)Pudb! (or something like it)
http://winpdb.org/
![Page 69: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/69.jpg)
Using winpdb
● Install winpdb– Ubuntu/Debian: Synaptic
– Windows: wxWindows .exe + winpdb .zip + setup.py
● Create your script as (EG) foo.py● At a shell prompt type: winpdb foo.py
![Page 70: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/70.jpg)
Example if statement
If 1 == 1:
# http://en.wikipedia.org/wiki/Off-side_rule
print('expression')
print('was')
print('True')
print('done with if')
![Page 71: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/71.jpg)
if statement described
A way of doing something 0 or 1 times
If using an oven, preheat.If using a toaster oven, don't worry about it.
![Page 72: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/72.jpg)
if/else
if canned_beans:
print('open can')
else:
print('soak beans overnight')
![Page 73: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/73.jpg)
If/elif/else
if x < 10:
print('less than 10')
elif 10 <= x < 20:
print('between 10 and 20')
elif 20 <= x < 30:
print('between 20 and 30')
else:
print('something else')
![Page 74: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/74.jpg)
Case/switch
● Python has no case statement or switch statement
● Instead use if/elif/else
![Page 75: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/75.jpg)
Example while statement
x = 5
while x < 10:
print(x)
x += 1
# prints the values 5, 6, 7, 8 and 9, each on
# a separate line
![Page 76: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/76.jpg)
while statement described
● Execute something 0 or more times● Maybe 100 times● Maybe forever
![Page 77: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/77.jpg)
while analogy
put_food_in_oven()
while not is_cooked_clear_through():
time.sleep(5*60)
remove_from_oven()
![Page 78: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/78.jpg)
Example for statement
for i in range(5):
print i
# prints 0, 1, 2, 3, 4 – each on a different line
![Page 79: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/79.jpg)
for statement described
Do something once for each thing in a specific sequence
EG, if you were making apple pie, you might core an apple once for each apple
![Page 80: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/80.jpg)
Exceptions
import sys
n = int(sys.argv[1])
try:
print(1.0 / n)
except ZeroDivisionError:
print('no reciprocal')
![Page 81: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/81.jpg)
Example of a user-defined function
def square(x):
result = x * x
return result
print(square(1))
# prints 1
print(square(5))
# prints 25
![Page 82: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/82.jpg)
User-defined functions described
● A way of doing something from more than one place in a program
● A way of introducing a “scope” to avoid variable name collisions
● A way of hiding detail
![Page 83: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/83.jpg)
Generator example
def my_range(n):
i = 0
while i < n:
yield i
for j in my_range(3):
print(j)
# prints 0, 1, 2 each on a separate line
![Page 84: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/84.jpg)
Parallelism
● CPython's threading is poor for CPU-bound processes, decent for I/O-bound processes
● CPython is good at “multiprocessing”: multiple processes and shared memory
● Jython and IronPython can thread well● Stackless● Pypy (Stackless)● CPython: greenlets
![Page 85: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/85.jpg)
Another way of getting a sequence in Python 2.x
for i in xrange(3): print(i) # prints: # 0 # 1 # 2
...and it's evaluated lazily
![Page 86: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/86.jpg)
On range and xrange in Python 3.x
●xrange is gone in 3.x●range in 3.x is like xrange in 2.x
●If you really do need an eagerly expanded list in 3.x, use list(range(x))
![Page 87: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/87.jpg)
Example of reading a file line by line
file_ = open('foo.txt', 'r') for line in file_: print(line) file_.close()
![Page 88: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/88.jpg)
Object Orientation
● Big topic● class statement● Like a “jack in the box”
![Page 89: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/89.jpg)
Quick class Exampleclass Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
result = Point(0, 0)
result.x = self.x + other.x
result.y = self.y + other.y
return result
def magnitude(self):
return (self.x ** 2 + self.y ** 2) ** 0.5
def __str__(self):
return 'Point(%f, %f)' % (self.x, self.y)
![Page 90: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/90.jpg)
Using the example classpoint1 = Point(5, 10)
point2 = Point(6, 15)
print(point1)
print(point2)
print(point1 + point2)
print(point1.magnitude())
# Outputs:
# Point(5.000000, 10.000000)
# Point(6.000000, 15.000000)
# Point(11.000000, 25.000000)
# 11.1803398875
![Page 91: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/91.jpg)
Static Analyzers
● Pylint● PyChecker● Pyflakes
● pep8
![Page 92: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/92.jpg)
Further Resources – Part 1 of 3
● The Python Tutorial: http://docs.python.org/tutorial/
● Dive into Python: http://diveintopython.org/● Python koans:
http://bitbucket.org/mcrute/python_koans/downloads
● Cheat sheets: http://rgruet.free.fr/#QuickRef● Google http://www.google.com/
![Page 93: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/93.jpg)
Further Resources – Part 2 of 3
● Choice of 2.x vs 3.x: http://wiki.python.org/moin/Python2orPython3
● python-list (comp.lang.python): http://mail.python.org/mailman/listinfo/python-list
● Your local Python User Group
![Page 94: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/94.jpg)
Further Resources – Part 3 of 3
● Python on Windows FAQhttps://docs.python.org/2/faq/windows.html
● Why Python? http://www.linuxjournal.com/article/3882
● Why learn Python? http://www.keithbraithwaite.demon.co.uk/professional/presentations/2003/ot/why_learn_python.pdf
![Page 95: An Introduction to Python - Dynstromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro to Python... · An Introduction to Python ... Examples of files A spreadsheet .ods or .xls](https://reader031.fdocuments.net/reader031/viewer/2022012317/5a7d3b047f8b9a49588d6762/html5/thumbnails/95.jpg)
Questions?