Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSC1018F: Functional Programming

Similar presentations


Presentation on theme: "CSC1018F: Functional Programming"— Presentation transcript:

1 CSC1018F: Functional Programming
Diving into Python Ch. 16

2 Lecture Outline Recap of Regular Expressions [week 3]
Functional Programming The Zen of Functional Programming Finding Path Names Filtering and Mapping Revisited Revision Exercise: Chess Notation

3 Recap of Regular Expressions
A powerful mechanism for identifying patterns in text But need to be handled with care An entirely new syntax is required Verbose regular expressions include whitespace and comments The verbose form is preferred

4 Introduction to Functional Programming
Data-centric thought pattern Functions are simply treated as another form of data Can be operated on and passed as arguments! Enables higher level logic and avoid “busywork coding” A philosophy of focusing on the data and how it needs to be transformed

5 Finding Path Names Functions useful in finding the name and path of the currently executing script: sys.argv - a list with the name and command line arguments of the script os.path.dirname(filename) - separates out and returns the path portion of filename os.path.abspath(pathname) - expands a pathname from partial to full. Performs normalization os.getcwd() - returns the current working directory

6 Filtering Lists Differently
Pass a function and a list to a filter. List elements are passed to the function which returns True for elements in the final filtered list Syntax: filter(fn, li) fn takes a single argument and evaluates to true or false Example: >>> def odd(n): return n % 2 ... >>> li = range(10) >>> filter(odd, li) [1,3,5,7,9] >>> [e for e in li if odd(e)]

7 Mapping Lists Differently
Pass a function and a list to a map. List elements are passed through the function: Syntax: map(fn, li) fn takes a single argument, operates on it and returns a new version Example: >>> def double(n): return n * 2 ... >>> li = range(10) >>> map(double, li) [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] >>> [double(e) for e in li]

8 Example: Dynamically Importing Modules
__import__ - a built in function that takes a module name as a string and returns the module Allows us to load and access modules that are only named at run-time Example: >>> moduleNames = [‘sys’, ‘os’, ‘re’] >>> modules = map(__import__, moduleNames) >>> modules [<module 'sys' (built-in)>, <module 'os' from '/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/os.pyc'>, <module 're' from '/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/re.pyc'>] >>> modules[0].version '2.3.3 (#2, Dec , 22:56:29) \n[GCC (prerelease)]'

9 Revision Exercise You are tasked with coding an “anonymization” program. This replaces names with initials in order to hide identity: To begin, read in a list of names from a file “idprotect.txt”, which contains names in the form: “Firstname” and also “Firstname Surname” on separate lines The main text should be read in from “plaintext.txt” and all occurrences of idprotect names replaced with their corresponding initial. Thus “John” becomes “J.” and “John Smith” becomes “J. S.” The final anonymous text should be output to the file “anontext.txt” Do this using regular expressions, maps and filters, where appropriate


Download ppt "CSC1018F: Functional Programming"

Similar presentations


Ads by Google