¿Cómo hacer un switch or match en Python?

10110 단어 pythonspanishtutorial
Python 3.10에서는 이전 버전의 언어를 사용하지 않고 다른 언어로 전환할 수 있는 방법에 대해 설명합니다: el switch 문. 예를 들어, 평가를 평가할 때 여러 평가와 평가를 비교하여 결정을 내리기 위해 여러 사건을 처리해야 합니다. 파이썬은 이미 구현되지 않았으며 많은 작업을 수행하지 않고 반복적으로 실행합니다.

Te recuerdo que si no sabes nada de Python tengo unaentrada donde hablo de "Inmersion en Python" ; Uno de los mejores libros gratuitos para aprender Python desde cero.

Python 3.10 이전 버전으로 전환하시겠습니까?



Python 3.10에서는 다음과 같이 전환할 수 있는 기능을 모방할 수 없습니다.

valor = "caso_n"
if valor == "caso_1":
    pass
if valor == "caso_2":
    pass
if valor == "caso_3":
    pass


O recurriendo a técnicas un poquito más sofisticadas:

def evalua_caso(caso, *args):
    switch = {"caso 1": "procesando caso 1", "caso 2": "procesando caso 2", "caso 3": "procesando caso 3"}
    return switch.get(caso, "Procesando caso por defecto")

valor = "caso 1"
evalua_caso(valor)


Los valores de cada llave en el diccionario pueden reemplazarse por funciones para tener aún mayor control sobre el flujo del programa.

Python 3.10으로 전환하려면 어떻게 해야 합니까?



A partir de Python 3.10, siempre y cuando los desarrolladores no se retracten, el switch statement, que llamaremos por su nombre, match, de ahora en adelante, se escribirá de la siguiente manera:

match subject:
    case <pattern_1>:
        <action_1>
    case <pattern_2>:
        <action_2>
    case <pattern_3>:
        <action_3>
    case _:
        <action_wildcard


El case seguido del guión bajo funcionará como el caso por defaulto en caso del que patrón no coincida con ningún otro. Es decir, el equivalente de default en lenguajes como Javascript.

Veamos un ejemplo:

def genera_monstruo(tipo):
    match tipo:
        case "Dementor":
            return "Genera Dementor"
        case "Aswang":
            return "Genera Aswang"
        case "Kapre":
            return "Genera Kapre"
        case _:
            return "Genera Goblin"


경비원



새로운 경기에는 추가 라마다 가드 기능이 포함되어 있으며 상황에 따라 평가할 수 있습니다. Si el case concurrent, pero la condición no se cumple brincará al siguiente bloque case.

match subject:
    case <pattern_1> if condition: # Si condition evalua a False se procederá al siguiente case
        <action_1>
    case <pattern_2>:
        <action_2>
    case <pattern_3>:
        <action_3>
    case _:
        <action_wildcard


Y hay que notar que el subject puede ser una cadena de texto, un objeto, una tupla o una instancia de una clase.

Python 3.10에 포함된 다른 기능



Además del nuevo match, Python 3.10 trae otros cambios y adiciones al lenguajes, los cuales son bastantes pero te resumo los que yo thinko los más Importantes:

Paréntesis en manejadores de contexto



Ya puedes usar paréntesis a lo largo de múltiples lineas en los manejadores de contexto (las sentencias que empiezan con with ... as)

with (
    CtxManager1(),
    CtxManager2()
):
    ...


Mensajes de error más claros en 우연의 일치 de llaves



Cuando te equivoques al cerrar una llave o paréntesis el interprete te avisará del error explícitamente que olvidaste cerrar tu llave o paréntesis, en lugar de solo marcarte un error de sintaxis.

File "example.py", line 1
    expected = {9: 1, 18: 2, 19: 2, 27: 3, 28: 3, 29: 3, 36: 4, 37: 4,
               ^
SyntaxError: '{' was never closed


Ya puedes usar el carácter pipe en el tipado



Se añade el operator 파이프 "|"파이썬 모듈은 유니온과 상호작용할 수 있는 방법을 제공합니다.

def square(number: int | float) -> int | float: # Antes Union[int, float]
    return number ** 2


Distutils queda 구식



배포 패키지 배포, Python 3.12에서 더 이상 사용되지 않는 항목, 중단된 항목이 표시됩니다.

Estos son solo algunos de los cambios, si quieres revisar la lista de cambios completa por favor visitala documentación oficial.

좋은 웹페이지 즐겨찾기