Skip to content

Use else instead of finally in "The with statement" documentation. #126664

@vivodi

Description

@vivodi

Documentation

In 8.5 The with statement, we can use else instead of finally.

manager = (EXPRESSION)
enter = type(manager).__enter__
exit = type(manager).__exit__
value = enter(manager)
hit_except = False

try:
    TARGET = value
    SUITE
except:
    hit_except = True
    if not exit(manager, *sys.exc_info()):
        raise
finally:
    if not hit_except:
        exit(manager, None, None, None)

is semantically equivalent to:

  manager = (EXPRESSION)
  enter = type(manager).__enter__
  exit = type(manager).__exit__
  value = enter(manager)

  try:
      TARGET = value
      SUITE
  except:
      if not exit(manager, *sys.exc_info()):
          raise
  else:
      exit(manager, None, None, None)

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    docsDocumentation in the Doc dir

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions