Do Python 3.10 em diante é possível usar algo como o "switch case" em outras linguagens, que é o "structural pattern matching".

No caso ficaria algo como:

def recieveAction(action):
    match action:
        case 'create':
            return 1
        case 'read':
            return 2
        case 'update':
            return 3
        case 'delete':
            return 4
        case _:
            return none

A leitura fica simples. Só não consigo te dizer agora se é mais eficiente computacionalmente falando, mas 'enxuga' um pouco os IFs do código.

Bacana! Pena que os projetos que atuo no momento usam Python 3.8, mas essa alternativa é interessante.

Mas nesse caso vc só trocou `if`/`elif` por `case` (um pra um, praticamente, ou seja, no fim não "enxugou" nada, só trocou a *keyword*). Se sua preocupação é **somente** ter menos linhas ([não deveria ser](https://pt.stackoverflow.com/a/400495/112052), mas enfim), então isso é trocar 6 por meia dúzia (para esse caso específico, claro, pois o *pattern matching* é um mecanismo bem mais poderoso e permite [vários outros truques bem legais](https://pt.stackoverflow.com/q/497534/112052)).

Geralmente com mais de 3 opções uso dict.get(). Não sabia que no Python 3.10 adicinaram match...case. Valeu!