Quantos argumentos?

Crie uma função que receba uma função func e conte seus argumentos. Examinar o bytecode de uma função usando __code__ está desabilitado.

Exemplos

num_args(lambda: "") ➞ 0

num_args(lambda x: "") ➞ 1

num_args(lambda x, y: "") ➞ 2

Observações

  • Todas as expressões de função de teste aleatórias serão construídas usando +, -, * e /.
  • Nenhum dos parâmetros de func terá valores padrão.
  • Todas as funções serão convertidas em um objeto de classe personalizado para evitar o uso de __code__.
  • Se desabilitar __code__ ou remover a funcionalidade das funções for rigoroso demais, sinta-se à vontade para deixar um comentário.