functions & modules - cornell university§ modules might conflict (functions w/ same name) §...
TRANSCRIPT
![Page 1: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/1.jpg)
Functions & Modules
Lecture 3
![Page 2: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/2.jpg)
Announcements
Reminders Reading Suggestions
9/5/19 Functions & Modules 2
• Have graded AI quiz§ Take now if have not§ If made 9/10, are okay§ Else must retake
• Survey 0 is still open§ For participation score§ Must complete 75%
• Must access in CMS
• If reading the text…§ Chapter 3 (but not 3.9)§ Sections 8.1, 8.2, 8.5, 8.8§ As always, text optional
• Skim the Python API§ And the introcs API§ See course Resources§ But also not required
![Page 3: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/3.jpg)
Function Calls
• Python supports expressions with math-like functions§ A function in an expression is a function call
• Function calls have the form name(x,y,…)
• Arguments are § Expressions, not values§ Separated by commas
functionname
argument
![Page 4: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/4.jpg)
Built-In Functions
• Python has several math functions§ round(2.34)§ max(a+3,24)
• You have seen many functions already§ Type casting functions: int(), float(), bool()
• Documentation of all of these are online§ https://docs.python.org/3/library/functions.html§ Most of these are two advanced for us right now
Arguments can be any expression
![Page 5: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/5.jpg)
Functions as Commands/Statements
• Most functions are expressions.§ You can use them in assignment statements§ Example: x = round(2.34)
• But some functions are commands.§ They instruct Python to do something§ Help function: help()§ Quit function: quit()
• How know which one? Read documentation.
These take no arguments
![Page 6: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/6.jpg)
Built-in Functions vs Modules
• The number of built-in functions is small§ http://docs.python.org/3/library/functions.html
• Missing a lot of functions you would expect§ Example: cos(), sqrt()
• Module: file that contains Python code§ A way for Python to provide optional functions§ To access a module, the import command§ Access the functions using module as a prefix
9/5/19 Functions & Modules 6
![Page 7: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/7.jpg)
Example: Module math
>>> import math>>> math.cos(0)1.0>>> cos(0)Traceback (most recent call last):
File "<stdin>", line 1, in <module>NameError: name 'cos' is not defined>>> math.pi3.141592653589793>>> math.cos(math.pi)-1.0
9/5/19 Functions & Modules 7
![Page 8: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/8.jpg)
Example: Module math
>>> import math>>> math.cos(0)1.0>>> cos(0)Traceback (most recent call last):
File "<stdin>", line 1, in <module>NameError: name 'cos' is not defined>>> math.pi3.141592653589793>>> math.cos(math.pi)-1.0
9/5/19 Functions & Modules 8
To access math functions
Functions require math
prefix!
![Page 9: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/9.jpg)
Example: Module math
>>> import math>>> math.cos(0)1.0>>> cos(0)Traceback (most recent call last):
File "<stdin>", line 1, in <module>NameError: name 'cos' is not defined>>> math.pi3.141592653589793>>> math.cos(math.pi)-1.0
9/5/19 Functions & Modules 9
To access math functions
Functions require math
prefix!
Module has variables too!
![Page 10: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/10.jpg)
Example: Module math
>>> import math>>> math.cos(0)1.0>>> cos(0)Traceback (most recent call last):
File "<stdin>", line 1, in <module>NameError: name 'cos' is not defined>>> math.pi3.141592653589793>>> math.cos(math.pi)-1.0
• os§ Information about your OS§ Cross-platform features
• random§ Generate random numbers§ Can pick any distribution
• introcs§ Custom module for the course§ Will be used a lot at start
9/5/19 Functions & Modules 10
To access math functions
Functions require math
prefix!
Module has variables too!
Other Modules
![Page 11: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/11.jpg)
Using the from Keyword
>>> import math>>> math.pi
3.141592653589793>>> from math import pi>>> pi
3.141592653589793>>> from math import *>>> cos(pi)-1.0
• Be careful using from!
• Using import is safer§ Modules might conflict
(functions w/ same name)
§ What if import both?
• Example: Turtles§ Used in Assignment 4
§ 2 modules: turtle, introcs§ Both have func. Turtle()
9/5/19 Functions & Modules 11
Must prefix with module name
No prefix needed for variable pi
No prefix needed for anything in math
![Page 12: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/12.jpg)
Reading the Python Documentation
9/5/19 Functions & Modules 12
http://docs.python.org/3/library
![Page 13: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/13.jpg)
Reading the Python Documentation
9/5/19 Functions & Modules 13
Function name
Possible arguments
What the function evaluates toModule
http://docs.python.org/3/library
![Page 14: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/14.jpg)
Interactive Shell vs. Modules
9/5/19 Functions & Modules 14
• Write in a code editor§ We use Atom Editor§ But anything will work
• Load module with import
• Launch in command line
• Type each line separately
• Python executes as you type
![Page 15: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/15.jpg)
Using a Module
Module Contents
""" A simple module.
This file shows how modules work """
# This is a commentx = 1+2x = 3*xx
9/5/19 Functions & Modules 15
![Page 16: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/16.jpg)
Using a Module
Module Contents
""" A simple module.
This file shows how modules work """
# This is a commentx = 1+2x = 3*xx
9/5/19 Functions & Modules 16
Single line comment(not executed)
![Page 17: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/17.jpg)
Using a Module
Module Contents
""" A simple module.
This file shows how modules work """
# This is a commentx = 1+2x = 3*xx
9/5/19 Functions & Modules 17
Single line comment(not executed)
Docstring (note the Triple Quotes)Acts as a multiple-line commentUseful for code documentation
![Page 18: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/18.jpg)
Using a Module
Module Contents
""" A simple module.
This file shows how modules work """
# This is a commentx = 1+2x = 3*xx
9/5/19 Functions & Modules 18
Single line comment(not executed)
Docstring (note the Triple Quotes)Acts as a multiple-line commentUseful for code documentation
CommandsExecuted on import
![Page 19: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/19.jpg)
Using a Module
Module Contents
""" A simple module.
This file shows how modules work """
# This is a commentx = 1+2x = 3*xx
9/5/19 Functions & Modules 19
Single line comment(not executed)
Docstring (note the Triple Quotes)Acts as a multiple-line commentUseful for code documentation
CommandsExecuted on import
Not a command.import ignores this
![Page 20: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/20.jpg)
Using a Module
Module Contents
""" A simple module.
This file shows how modules work """
# This is a commentx = 1+2x = 3*xx
Python Shell
>>> import module>>>
9/5/19 Functions & Modules 20
x
![Page 21: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/21.jpg)
Using a Module
Module Contents
""" A simple module.
This file shows how modules work """
# This is a commentx = 1+2x = 3*xx
Python Shell
>>> import module>>> Traceback (most recent call last):
File "<stdin>", line 1, in <module>NameError: name 'x' is not defined
9/5/19 Functions & Modules 21
x
![Page 22: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/22.jpg)
Using a Module
Module Contents
""" A simple module.
This file shows how modules work """
# This is a commentx = 1+2x = 3*xx
Python Shell
>>> import module>>> Traceback (most recent call last):
File "<stdin>", line 1, in <module>NameError: name 'x' is not defined>>> 9
9/5/19 Functions & Modules 22
x
module.x“Module data” must be
prefixed by module name
![Page 23: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/23.jpg)
Using a Module
Module Contents
""" A simple module.
This file shows how modules work """
# This is a commentx = 1+2x = 3*xx
Python Shell
>>> import module>>> Traceback (most recent call last):
File "<stdin>", line 1, in <module>NameError: name 'x' is not defined>>> 9>>>
9/5/19 Functions & Modules 23
x
module.x
help(module)
“Module data” must be prefixed by module name
Prints docstring and module contents
![Page 24: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/24.jpg)
Modules Must be in Working Directory!
9/5/19 Functions & Modules 24
Module you want is in this folder
![Page 25: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/25.jpg)
Modules Must be in Working Directory!
9/5/19 Functions & Modules 25
Module you want is in this folder
Have to navigate to folder BEFORE running Python
![Page 26: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/26.jpg)
Modules vs. Scripts
Module
• Provides functions, variables§ Example: temp.py
• import it into Python shell>>> import temp>>> temp.to_fahrenheit(100)212.0>>>
Script
• Behaves like an application§ Example: helloApp.py
• Run it from command line:python helloApp.py
9/5/19 Functions & Modules 26
![Page 27: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/27.jpg)
Modules vs. Scripts
Module
• Provides functions, variables§ Example: temp.py
• import it into Python shell>>> import temp>>> temp.to_fahrenheit(100)212.0>>>
Script
• Behaves like an application§ Example: helloApp.py
• Run it from command line:python helloApp.py
9/5/19 Functions & Modules 27
Files look the same. Difference is how you use them.
![Page 28: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/28.jpg)
Scripts and Print Statements
module.py
""" A simple module.
This file shows how modules work """
# This is a commentx = 1+2x = 3*xx
script.py
""" A simple script.
This file shows why we use print """
# This is a commentx = 1+2x = 3*xprint(x)
9/5/19 Functions & Modules 28
![Page 29: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/29.jpg)
Scripts and Print Statements
module.py
""" A simple module.
This file shows how modules work """
# This is a commentx = 1+2x = 3*xx
script.py
""" A simple script.
This file shows why we use print """
# This is a commentx = 1+2x = 3*xprint(x)
9/5/19 Functions & Modules 29
Only difference
![Page 30: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/30.jpg)
Scripts and Print Statements
module.py script.py
9/5/19 Functions & Modules 30
• Looks like nothing happens
• Python did the following:§ Executed the assignments
§ Skipped the last line(‘x’ is not a statement)
• We see something this time!
• Python did the following:§ Executed the assignments
§ Executed the last line(Prints the contents of x)
![Page 31: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/31.jpg)
Scripts and Print Statements
module.py script.py
9/5/19 Functions & Modules 31
• Looks like nothing happens
• Python did the following:§ Executed the assignments
§ Skipped the last line(‘x’ is not a statement)
• We see something this time!
• Python did the following:§ Executed the assignments
§ Executed the last line(Prints the contents of x)
When you run a script,
only statements are executed
![Page 32: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/32.jpg)
User Input
>>> input('Type something')Type somethingabc'abc'>>> input('Type something: ')Type something: abc'abc'>>> x = input('Type something: ')Type something: abc>>> x'abc'
No space after the prompt.
Proper space after prompt.
Assign result to variable.
9/5/19 Functions & Modules 32
![Page 33: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/33.jpg)
Making a Script Interactive
"""A script showing off input.
This file shows how to make a script interactive."""
x = input("Give me a something: ")print("You said: "+x)
[wmw2] folder> python script.pyGive me something: HelloYou said: Hello[wmw2] folder> python script.pyGive me something: GoodbyeYou said: Goodbye[wmw2] folder>
9/5/19 Functions & Modules 33
Not using theinteractive shell
![Page 34: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/34.jpg)
Numeric Input
• input returns a string§ Even if looks like int§ It cannot know better
• You must convert values§ int(), float(), bool(), etc.§ Error if cannot convert
• One way to program§ But it is a bad way§ Cannot be automated
>>> x = input('Number: ')Number: 3>>> x'3'>>> x + 1TypeError: must be str, not int>>> x = int(x)>>> x+14
Value is a string.
Must convert to int.
9/5/19 Functions & Modules 34
![Page 35: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/35.jpg)
Next Time: Defining Functions
Function Call
• Command to do the function• Can put it anywhere
§ In the Python shell§ Inside another module
Function Definition
• Command to do the function• Belongs inside a module
9/5/19 Functions & Modules 35
![Page 36: Functions & Modules - Cornell University§ Modules might conflict (functions w/ same name) § What if import both? • Example: Turtles § Used in Assignment 4 § 2 modules: turtle,](https://reader033.vdocuments.us/reader033/viewer/2022053020/5f2baa8b5e91751d13566fde/html5/thumbnails/36.jpg)
Next Time: Defining Functions
Function Call
• Command to do the function• Can put it anywhere
§ In the Python shell§ Inside another module
Function Definition
• Command to do the function• Belongs inside a module
9/5/19 Functions & Modules 36
Can call as many times as you want
But only definefunction ONCEarguments
inside ()