libraries copyright © software carpentry 2010 this work is licensed under the creative commons...
TRANSCRIPT
![Page 1: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/1.jpg)
Libraries
Copyright © Software Carpentry 2010
This work is licensed under the Creative Commons Attribution License
See http://software-carpentry.org/license.html for more information.
Python
![Page 2: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/2.jpg)
Python Libraries
A function is a way to turn a bunch of related
statements into a single "chunk"
![Page 3: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/3.jpg)
Python Libraries
A function is a way to turn a bunch of related
statements into a single "chunk"
– Avoid duplication
![Page 4: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/4.jpg)
Python Libraries
A function is a way to turn a bunch of related
statements into a single "chunk"
– Avoid duplication
– Make code easier to read
![Page 5: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/5.jpg)
Python Libraries
A function is a way to turn a bunch of related
statements into a single "chunk"
– Avoid duplication
– Make code easier to read
A library does the same thing for related functions
![Page 6: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/6.jpg)
Python Libraries
A function is a way to turn a bunch of related
statements into a single "chunk"
– Avoid duplication
– Make code easier to read
A library does the same thing for related functions
Hierarchical organization
![Page 7: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/7.jpg)
Python Libraries
A function is a way to turn a bunch of related
statements into a single "chunk"
– Avoid duplication
– Make code easier to read
A library does the same thing for related functions
Hierarchical organization
family library
genus function
species statement
![Page 8: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/8.jpg)
Python Libraries
Every Python file can be used as a library
![Page 9: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/9.jpg)
Python Libraries
Every Python file can be used as a library
Use import to load it
![Page 10: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/10.jpg)
Python Libraries
Every Python file can be used as a library
Use import to load it
# halman.pydef threshold(signal): return 1.0 / sum(signal)
![Page 11: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/11.jpg)
Python Libraries
Every Python file can be used as a library
Use import to load it
# halman.pydef threshold(signal): return 1.0 / sum(signal)
# program.pyimport halmanreadings = [0.1, 0.4, 0.2]print 'signal threshold is', halman.threshold(readings)
![Page 12: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/12.jpg)
Python Libraries
Every Python file can be used as a library
Use import to load it
# halman.pydef threshold(signal): return 1.0 / sum(signal)
# program.pyimport halmanreadings = [0.1, 0.4, 0.2]print 'signal threshold is', halman.threshold(readings)
$ python program.pysignal threshold is 1.42857
![Page 13: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/13.jpg)
Python Libraries
When a module is imported, Python:
![Page 14: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/14.jpg)
Python Libraries
When a module is imported, Python:
1. Executes the statements it contains
![Page 15: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/15.jpg)
Python Libraries
When a module is imported, Python:
1. Executes the statements it contains
2. Creates an object that stores references to
t
h
e
t
o
p
-
l
e
v
e
l
i
t
e
m
s
i
n
t
h
a
t
m
o
d
u
l
e
![Page 16: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/16.jpg)
Python Libraries
When a module is imported, Python:
1. Executes the statements it contains
2. Creates an object that stores references to
t
h
e
t
o
p
-
l
e
v
e
l
i
t
e
m
s
i
n
t
h
a
t
m
o
d
u
l
e
# noisy.pyprint 'is this module being loaded?'NOISE_LEVEL = 1./3.
![Page 17: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/17.jpg)
Python Libraries
When a module is imported, Python:
1. Executes the statements it contains
2. Creates an object that stores references to
t
h
e
t
o
p
-
l
e
v
e
l
i
t
e
m
s
i
n
t
h
a
t
m
o
d
u
l
e
# noisy.pyprint 'is this module being loaded?'NOISE_LEVEL = 1./3.
>>> import noisyis this module being loaded?
![Page 18: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/18.jpg)
Python Libraries
When a module is imported, Python:
1. Executes the statements it contains
2. Creates an object that stores references to
t
h
e
t
o
p
-
l
e
v
e
l
i
t
e
m
s
i
n
t
h
a
t
m
o
d
u
l
e
# noisy.pyprint 'is this module being loaded?'NOISE_LEVEL = 1./3.
>>> import noisyis this module being loaded?>>> print noisy.NOISE_LEVEL0.33333333
![Page 19: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/19.jpg)
Python Libraries
Each module is a namespace
![Page 20: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/20.jpg)
Python Libraries
Each module is a namespace
function
![Page 21: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/21.jpg)
Python Libraries
Each module is a namespace
module
function
![Page 22: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/22.jpg)
Python Libraries
Each module is a namespace
global
module
function
![Page 23: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/23.jpg)
Python Libraries
# module.pyNAME = 'Transylvania'
def func(arg): return NAME + ' ' + arg
Each module is a namespace
global
module
function
![Page 24: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/24.jpg)
Python Libraries
# module.pyNAME = 'Transylvania'
def func(arg): return NAME + ' ' + arg
Each module is a namespace
global
module
function
>>> NAME = 'Hamunaptra'
![Page 25: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/25.jpg)
Python Libraries
# module.pyNAME = 'Transylvania'
def func(arg): return NAME + ' ' + arg
Each module is a namespace
global
module
function
>>> NAME = 'Hamunaptra'>>> import module
![Page 26: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/26.jpg)
Python Libraries
# module.pyNAME = 'Transylvania'
def func(arg): return NAME + ' ' + arg
Each module is a namespace
global
module
function
>>> NAME = 'Hamunaptra'>>> import module>>> print module.func('!!!')Transylvania !!!
![Page 27: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/27.jpg)
Python Libraries
Python comes with many standard libraries
![Page 28: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/28.jpg)
Python Libraries
Python comes with many standard libraries
>>> import math
![Page 29: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/29.jpg)
Python Libraries
Python comes with many standard libraries
>>> import math>>> print math.sqrt(2)1.4142135623730951
![Page 30: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/30.jpg)
Python Libraries
Python comes with many standard libraries
>>> import math>>> print math.sqrt(2)1.4142135623730951>>> print math.hypot(2, 3) # sqrt(x**2 + y**2)3.6055512754639891
![Page 31: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/31.jpg)
Python Libraries
Python comes with many standard libraries
>>> import math>>> print math.sqrt(2)1.4142135623730951>>> print math.hypot(2, 3) # sqrt(x**2 + y**2)3.6055512754639891>>> print math.e, math.pi # as accurate as possible2.7182818284590451 3.1415926535897931
![Page 32: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/32.jpg)
Python Libraries
Python also provides a help function
![Page 33: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/33.jpg)
Python Libraries
Python also provides a help function
>>> import math>>> help(math)Help on module math:NAME mathFILE /usr/lib/python2.5/lib-dynload/math.soMODULE DOCS http://www.python.org/doc/current/lib/module-math.htmlDESCRIPTION This module is always available. It provides access to the mathematical functions defined by the C standard.FUNCTIONS acos(...) acos(x) Return the arc cosine (measured in radians) of x.⋮
![Page 34: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/34.jpg)
Python Libraries
And some nicer ways to do imports
![Page 35: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/35.jpg)
Python Libraries
And some nicer ways to do imports
>>> from math import sqrt>>> sqrt(3)1.7320508075688772
![Page 36: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/36.jpg)
Python Libraries
And some nicer ways to do imports
>>> from math import sqrt>>> sqrt(3)1.7320508075688772>>> from math import hypot as euclid>>> euclid(3, 4)5.0
![Page 37: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/37.jpg)
Python Libraries
And some nicer ways to do imports
>>> from math import sqrt>>> sqrt(3)1.7320508075688772>>> from math import hypot as euclid>>> euclid(3, 4)5.0>>> from math import *>>> sin(pi)1.2246063538223773e-16>>>
![Page 38: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/38.jpg)
Python Libraries
And some nicer ways to do imports
>>> from math import sqrt>>> sqrt(3)1.7320508075688772>>> from math import hypot as euclid>>> euclid(3, 4)5.0>>> from math import *>>> sin(pi)1.2246063538223773e-16>>>
Generally a bad idea
![Page 39: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/39.jpg)
Python Libraries
And some nicer ways to do imports
>>> from math import sqrt>>> sqrt(3)1.7320508075688772>>> from math import hypot as euclid>>> euclid(3, 4)5.0>>> from math import *>>> sin(pi)1.2246063538223773e-16>>>
Generally a bad idea
Someone could add to
the library after you
start using it
![Page 40: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/40.jpg)
Python Libraries
Almost every program uses the sys library
![Page 41: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/41.jpg)
Python Libraries
Almost every program uses the sys library
>>> import sys
![Page 42: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/42.jpg)
Python Libraries
Almost every program uses the sys library
>>> import sys>>> print sys.version2.7 (r27:82525, Jul 4 2010, 09:01:59)[MSC v.1500 32 bit (Intel)]
![Page 43: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/43.jpg)
Python Libraries
Almost every program uses the sys library
>>> import sys>>> print sys.version2.7 (r27:82525, Jul 4 2010, 09:01:59)[MSC v.1500 32 bit (Intel)]>>> print sys.platformwin32
![Page 44: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/44.jpg)
Python Libraries
Almost every program uses the sys library
>>> import sys>>> print sys.version2.7 (r27:82525, Jul 4 2010, 09:01:59)[MSC v.1500 32 bit (Intel)]>>> print sys.platformwin32>>> print sys.maxint2147483647
![Page 45: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/45.jpg)
Python Libraries
Almost every program uses the sys library
>>> import sys>>> print sys.version2.7 (r27:82525, Jul 4 2010, 09:01:59)[MSC v.1500 32 bit (Intel)]>>> print sys.platformwin32>>> print sys.maxint2147483647>>> print sys.path['', 'C:\\WINDOWS\\system32\\python27.zip', 'C:\\Python27\\DLLs', 'C:\\Python27\\lib', 'C:\\Python27\\lib\\plat-win', 'C:\\Python27', 'C:\\Python27\\lib\\site-packages']
![Page 46: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/46.jpg)
Python Libraries
sys.argv holds command-line arguments
![Page 47: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/47.jpg)
Python Libraries
sys.argv holds command-line arguments
Script name is sys.argv[0]
![Page 48: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/48.jpg)
Python Libraries
sys.argv holds command-line arguments
Script name is sys.argv[0]
# echo.pyimport sysfor i in range(len(sys.argv)): print i, '"' + sys.argv[i] + '"'
![Page 49: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/49.jpg)
Python Libraries
sys.argv holds command-line arguments
Script name is sys.argv[0]
# echo.pyimport sysfor i in range(len(sys.argv)): print i, '"' + sys.argv[i] + '"'
$ python echo.py0 echo.py$
![Page 50: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/50.jpg)
Python Libraries
sys.argv holds command-line arguments
Script name is sys.argv[0]
# echo.pyimport sysfor i in range(len(sys.argv)): print i, '"' + sys.argv[i] + '"'
$ python echo.py0 echo.py$ python echo.py first second0 echo.py1 first2 second$
![Page 51: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/51.jpg)
Python Libraries
sys.stdin is standard input (e.g., the keyboard)
![Page 52: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/52.jpg)
Python Libraries
sys.stdin is standard input (e.g., the keyboard)
sys.stdout is standard output (e.g., the screen)
![Page 53: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/53.jpg)
Python Libraries
sys.stdin is standard input (e.g., the keyboard)
sys.stdout is standard output (e.g., the screen)
sys.stderr is standard error (usually also the screen)
![Page 54: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/54.jpg)
Python Libraries
sys.stdin is standard input (e.g., the keyboard)
sys.stdout is standard output (e.g., the screen)
sys.stderr is standard error (usually also the screen)
See the Unix shell lecture for more information
![Page 55: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/55.jpg)
Python Libraries
# count.pyimport sysif len(sys.argv) == 1: count_lines(sys.stdin)else: rd = open(sys.argv[1], 'r') count_lines(rd) rd.close()
![Page 56: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/56.jpg)
Python Libraries
# count.pyimport sysif len(sys.argv) == 1: count_lines(sys.stdin)else: rd = open(sys.argv[1], 'r') count_lines(rd) rd.close()
![Page 57: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/57.jpg)
Python Libraries
# count.pyimport sysif len(sys.argv) == 1: count_lines(sys.stdin)else: rd = open(sys.argv[1], 'r') count_lines(rd) rd.close()
![Page 58: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/58.jpg)
Python Libraries
# count.pyimport sysif len(sys.argv) == 1: count_lines(sys.stdin)else: rd = open(sys.argv[1], 'r') count_lines(rd) rd.close()
$ python count.py < a.txt48$
![Page 59: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/59.jpg)
Python Libraries
# count.pyimport sysif len(sys.argv) == 1: count_lines(sys.stdin)else: rd = open(sys.argv[1], 'r') count_lines(rd) rd.close()
$ python count.py < a.txt48$ python count.py b.txt227$
![Page 60: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/60.jpg)
Python Libraries
The more polite way
'''Count lines in files. If no filename arguments given,read from standard input.''' import sys
def count_lines(reader): '''Return number of lines in text read from reader.''' return len(reader.readlines())
if __name__ == '__main__': ...as before...
![Page 61: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/61.jpg)
Python Libraries
The more polite way
'''Count lines in files. If no filename arguments given,read from standard input.''' import sys
def count_lines(reader): '''Return number of lines in text read from reader.''' return len(reader.readlines())
if __name__ == '__main__': ...as before...
![Page 62: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/62.jpg)
Python Libraries
The more polite way
'''Count lines in files. If no filename arguments given,read from standard input.''' import sys
def count_lines(reader): '''Return number of lines in text read from reader.''' return len(reader.readlines())
if __name__ == '__main__': ...as before...
![Page 63: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/63.jpg)
Python Libraries
If the first statement in a module or function is
a string, it is saved as a docstring
![Page 64: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/64.jpg)
Python Libraries
If the first statement in a module or function is
a string, it is saved as a docstring
Used for online (and offline) help
![Page 65: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/65.jpg)
Python Libraries
If the first statement in a module or function is
a string, it is saved as a docstring
Used for online (and offline) help
# adder.py'''Addition utilities.'''
def add(a, b): '''Add arguments.''' return a+b
![Page 66: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/66.jpg)
Python Libraries
If the first statement in a module or function is
a string, it is saved as a docstring
Used for online (and offline) help
# adder.py'''Addition utilities.'''
def add(a, b): '''Add arguments.''' return a+b
>>> import adder>>> help(adder)NAME adder - Addition utilities.FUNCTIONS add(a, b) Add arguments.>>>
![Page 67: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/67.jpg)
Python Libraries
If the first statement in a module or function is
a string, it is saved as a docstring
Used for online (and offline) help
# adder.py'''Addition utilities.'''
def add(a, b): '''Add arguments.''' return a+b
>>> import adder>>> help(adder)NAME adder - Addition utilities.FUNCTIONS add(a, b) Add arguments.>>> help(adder.add)add(a, b) Add arguments.>>>
![Page 68: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/68.jpg)
Python Libraries
When Python loads a module, it assigns a value
to the module-level variable __name__
![Page 69: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/69.jpg)
Python Libraries
When Python loads a module, it assigns a value
to the module-level variable __name__
main program
'__main__'
![Page 70: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/70.jpg)
Python Libraries
When Python loads a module, it assigns a value
to the module-level variable __name__
main program loaded as library
'__main__' module name
![Page 71: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/71.jpg)
Python Libraries
When Python loads a module, it assigns a value
to the module-level variable __name__
main program loaded as library
'__main__' module name
...module definitions...
if __name__ == '__main__': ...run as main program...
![Page 72: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/72.jpg)
Python Libraries
When Python loads a module, it assigns a value
to the module-level variable __name__
main program loaded as library
'__main__' module name
...module definitions...
if __name__ == '__main__': ...run as main program...
Always executed
![Page 73: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/73.jpg)
Python Libraries
When Python loads a module, it assigns a value
to the module-level variable __name__
main program loaded as library
'__main__' module name
...module definitions...
if __name__ == '__main__': ...run as main program...
Always executed
Only executed when
file run directly
![Page 74: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/74.jpg)
Python Libraries
# stats.py'''Useful statistical tools.'''
def average(values): '''Return average of values or None if no data.''' if values: return sum(values) / len(values) else: return None
if __name__ == '__main__': print 'test 1 should be None:', average([]) print 'test 2 should be 1:', average([1]) print 'test 3 should be 2:', average([1, 2, 3])
![Page 75: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/75.jpg)
Python Libraries
# test-stats.pyfrom stats import averageprint 'test 4 should be None:', average(set())print 'test 5 should be -1:', average({0, -1, -2})
![Page 76: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/76.jpg)
Python Libraries
# test-stats.pyfrom stats import averageprint 'test 4 should be None:', average(set())print 'test 5 should be -1:', average({0, -1, -2})
$ python stats.pytest 1 should be None: Nonetest 2 should be 1: 1test 3 should be 2: 2$
![Page 77: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/77.jpg)
Python Libraries
# test-stats.pyfrom stats import averageprint 'test 4 should be None:', average(set())print 'test 5 should be -1:', average({0, -1, -2})
$ python stats.pytest 1 should be None: Nonetest 2 should be 1: 1test 3 should be 2: 2$ python test-stats.pytest 4 should be None: Nonetest 5 should be -1: -1$
![Page 78: Libraries Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader035.vdocuments.net/reader035/viewer/2022062517/56649f135503460f94c2698e/html5/thumbnails/78.jpg)
October 2010
created by
Greg Wilson
Copyright © Software Carpentry 2010
This work is licensed under the Creative Commons Attribution License
See http://software-carpentry.org/license.html for more information.