marimo-learn / Python /phase_4 /function_design.py
Haleshot's picture
Add function design interactive notebook
ebb1733 unverified
raw
history blame
4.67 kB
# /// script
# requires-python = ">=3.10"
# dependencies = [
# "marimo",
# ]
# ///
import marimo
__generated_with = "0.10.16"
app = marimo.App()
@app.cell
def _():
import marimo as mo
return (mo,)
@app.cell(hide_code=True)
def _(mo):
mo.md(
"""
# 🧩 Function Design in Python
Dive into the world of Python functions — where code becomes modular and powerful!
## Function Basics
Functions help you:
- Break down complex problems
- Create reusable code blocks
- Improve code readability (good practice)
```python
def function_name(parameters):
'''Docstring explaining the function'''
# Function body
return result
```
"""
)
return
@app.cell
def _():
# Example function with parameter
def greet(name):
return f"Hello, {name}!"
name = "Python Learner"
return greet, name
@app.cell
def _(greet, name):
greet(name)
return
@app.cell(hide_code=True)
def _(mo):
mo.md(
"""
## Default Parameters
Make your functions more flexible by providing default values.
"""
)
return
@app.cell
def _(default_age):
default_age
return
@app.cell
def _(mo):
# Interactive function (default parameter demo)
default_age = mo.ui.number(value=18, start=0, stop=120, label="Default Age")
return (default_age,)
@app.cell
def _(default_age):
def create_profile(name, age=default_age.value):
return f"{name} is {age} years old"
example_name = "Alex"
return create_profile, example_name
@app.cell
def _(create_profile, example_name):
create_profile(example_name)
return
@app.cell
def _(first_param, mo, second_param):
mo.hstack([first_param, second_param])
return
@app.cell
def _(mo):
# Multiple parameters interactive function demo
first_param = mo.ui.number(value=10, start=0, stop=100, label="First Number")
second_param = mo.ui.number(value=5, start=0, stop=100, label="Second Number")
return first_param, second_param
@app.cell
def _(first_param, second_param):
def calculate(a, b):
"""
Perform multiple calculations on two numbers.
Args:
a (int): First number
b (int): Second number
Returns:
dict: Results of various calculations
"""
return {
"sum": a + b,
"product": a * b,
"difference": a - b,
"max": max(a, b)
}
result = calculate(first_param.value, second_param.value)
return calculate, result
@app.cell(hide_code=True)
def _(mo, result):
mo.md(f"""
## Function Results
Calculation Results:
{result}
""")
return
@app.cell(hide_code=True)
def _(mo):
mo.md(
"""
## Multiple Return Values
Python allows returning multiple values easily:
```python
def multiple_returns():
return value1, value2, value3
# Unpacking returns
x, y, z = multiple_returns()
```
"""
)
return
@app.cell
def _(temperature):
temperature
return
@app.cell
def _(mo):
# Multiple return values and how they are captured
temperature = mo.ui.number(value=25, start=-50, stop=50, label="Temperature")
return (temperature,)
@app.cell
def _(temperature):
def weather_analysis(temp):
"""
Analyze weather based on temperature.
Args:
temp (float): Temperature in Celsius (superior unit of measurement)
Returns:
tuple: Weather status, recommendation, warning level
"""
if temp <= 0:
return "Freezing", "Wear heavy coat", "High"
elif 0 < temp <= 15:
return "Cold", "Layer up", "Medium"
elif 15 < temp <= 25:
return "Mild", "Comfortable clothing", "Low"
else:
return "Hot", "Stay hydrated", "High"
analysis = weather_analysis(temperature.value)
return analysis, weather_analysis
@app.cell(hide_code=True)
def _(mo, weather_analysis):
mo.md(f"""
## Multiple Return Demonstration
Current Temperature Analysis:
{weather_analysis(25)}
""")
return
@app.cell(hide_code=True)
def _(mo):
callout_text = mo.md("""
## Your Function Design Journey!
Next Steps:
- Practice creating functions
- Experiment with default parameters
- Explore multiple return values
""")
mo.callout(callout_text, kind="success")
return (callout_text,)
if __name__ == "__main__":
app.run()