diff --git a/notebook/context manager/hands_on/1_microscope_script.py b/notebook/context manager/hands_on/1_microscope_script.py index 78e59f1..3ea2e00 100644 --- a/notebook/context manager/hands_on/1_microscope_script.py +++ b/notebook/context manager/hands_on/1_microscope_script.py @@ -14,6 +14,13 @@ scan_sample, # Scan sample currently in the microscope ) +@contextmanager +def sample_inserted(microscope_state): + insert_sample(microscope_state) + try: + yield + finally: + remove_sample(microscope_state) @contextmanager def do_stuff_under_vacuum(microscope_state): @@ -33,14 +40,8 @@ def do_stuff_under_vacuum(microscope_state): # Rewrite this script using the two context managers. microscope_state = connect_to_microscope() -activate_vacuum_pump(microscope_state) -try: - insert_sample(microscope_state) - try: +with do_stuff_under_vacuum(microscope_state): + with sample_inserted(microscope_state): sample_image = scan_sample(microscope_state) - finally: - remove_sample(microscope_state) -finally: - deactivate_vacuum_pump(microscope_state) release_microscope(microscope_state)