1 / 9

CSC1018F: Functional Programming

CSC1018F: Functional Programming. Diving into Python Ch. 16. 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. Recap of Regular Expressions.

Download Presentation

CSC1018F: Functional Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

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 23 2003, 22:56:29) \n[GCC 3.1 20020420 (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

More Related