diff options
author | Terry Jan Reedy <tjreedy@udel.edu> | 2024-03-13 05:30:39 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-13 05:30:39 (GMT) |
commit | 43986f55671ba2f7b08f8c5cea69aa136a093697 (patch) | |
tree | d4da800f52003b74f02eb56e0b5a0462c27cb666 /Doc | |
parent | 3f1b6efee95c06f8912bcea4031afacdbc0d5684 (diff) | |
download | cpython-43986f55671ba2f7b08f8c5cea69aa136a093697.zip cpython-43986f55671ba2f7b08f8c5cea69aa136a093697.tar.gz cpython-43986f55671ba2f7b08f8c5cea69aa136a093697.tar.bz2 |
gh-111307: Update design FAQ 'switch' entry (#115899)
Diffstat (limited to 'Doc')
-rw-r--r-- | Doc/faq/design.rst | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/Doc/faq/design.rst b/Doc/faq/design.rst index 300e1b6..c8beb64 100644 --- a/Doc/faq/design.rst +++ b/Doc/faq/design.rst @@ -259,9 +259,11 @@ is evaluated in all cases. Why isn't there a switch or case statement in Python? ----------------------------------------------------- -You can do this easily enough with a sequence of ``if... elif... elif... else``. -For literal values, or constants within a namespace, you can also use a -``match ... case`` statement. +In general, structured switch statements execute one block of code +when an expression has a particular value or set of values. +Since Python 3.10 one can easily match literal values, or constants +within a namespace, with a ``match ... case`` statement. +An older alternative is a sequence of ``if... elif... elif... else``. For cases where you need to choose from a very large number of possibilities, you can create a dictionary mapping case values to functions to call. For @@ -290,6 +292,9 @@ It's suggested that you use a prefix for the method names, such as ``visit_`` in this example. Without such a prefix, if values are coming from an untrusted source, an attacker would be able to call any method on your object. +Imitating switch with fallthrough, as with C's switch-case-default, +is possible, much harder, and less needed. + Can't you emulate threads in the interpreter instead of relying on an OS-specific thread implementation? -------------------------------------------------------------------------------------------------------- |