Existe uma maneira de expandir uma tupla Python em uma função - como parâmetros reais?
Por exemplo, aqui expand()
está a mágica:
some_tuple = (1, "foo", "bar")
def myfun(number, str1, str2):
return (number * 2, str1 + str2, str2 + str1)
myfun(expand(some_tuple)) # (2, "foobar", "barfoo")
Eu sei que alguém poderia definir myfun
como myfun((a, b, c))
, mas é claro que pode haver código legado. obrigado
python
tuples
parameter-passing
AkiRoss
fonte
fonte
Observe que você também pode expandir parte da lista de argumentos:
fonte
some_func(*tuple_of_stuff, another_argument)
def func(a,b,c,d): print(a,b,c,d)
comargs = ('fee', 'fi', 'fo'); func(*args, 'fum')
Dê uma olhada na seção 4.7.3 e 4.7.4 do tutorial em Python . Ele fala sobre passar tuplas como argumentos.
Também consideraria usar parâmetros nomeados (e passar um dicionário) em vez de usar uma tupla e passar uma sequência. Acho que o uso de argumentos posicionais é uma má prática quando as posições não são intuitivas ou existem vários parâmetros.
fonte
Este é o método de programação funcional. Ele tira o recurso de expansão da tupla do açúcar de sintaxe:
apply_tuple = lambda f, t: f(*t)
Exemplo de uso:
A redefinição de curry
apply_tuple
economiza muitaspartial
chamadas a longo prazo.fonte
lambda f, t: f(*t)
não usa módulos de terceiros e eu sou iniciante em Python e isso é útil para mim. Esta é uma abordagem funcional pura. Se você não usar esse estilo, então esta resposta não é para você.starmap
docs.python.org/3.7/library/itertools.html#itertools.starmap