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!