• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

JoaoRodrigues

Indefinir o número de argumentos de uma função

8 mensagens neste tópico

Boas pessoal :P

Suponhamos uma função:

def soma(arg1, arg2):
    return arg1+arg2

Agora, imaginemos que não quero limitar o número de argumentos a passar à função. Quero poder somar 2, ou 3, ou 4, ou 1000 números, consoante necessário. Há maneira disto? Eu já vi uma sintaxe tipo:

def soma(**args)
   return whateverIsHere

É isto que procuro? Alguém já usou disto?

Abraço!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nunca precisei de nada do género, mas a primeira solução que me vem à cabeça é passares apenas um argumento: uma tupla ou uma lista com os parametros:

def ois(args):
    return ''.join(map(str, map(args[0], args[1:])))

print ois((lambda x: x**2, 11,23,123,11,1))

Mas acredito que o Python tenha alguma maneira de o fazer. :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu fiz assim testado e a funcionar a 100% :P


def soma(d):
    e=0
    for i in d:
        e=e+i

    return e

somar=soma([1,2,3,4,5,6,7,8,9,10,11,12,13])

print somar

A ideia é a mesma mas (na minha opinião) fica com um codigo mais simples de ser lido 8-)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma lista... nem tinha pensado nessa :P Também já eram umas quanta da manhã...

Mas e relativamente ao tal **args, ninguém sabe o que aquilo é?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Betovsky, confessa, tens um link especial no tópico que diz "Tópicos com a palavra função/funcional não lidos" :P

Thanks pela ajuda malta :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Betovsky, confessa, tens um link especial no tópico que diz "Tópicos com a palavra função/funcional não lidos" :P

Thanks pela ajuda malta :)

:P Como é que adivinhaste? Por acaso foi feito mesmo à medida para a minha pessoa.

Agora a sério. Apesar de preferir de longe Haskell, não quer dizer que também não aprecie outras linguagens...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas admite, tens uma santa paixão por programação funcional :)

Bem pessoal, muito obrigado pela ajuda, foi daquelas coisas que sempre me intrigou :P Vou ter mesmo que vos mencionar na tese de licenciatura :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora