Как вызвать функцию, а в качестве параметров передать элементы массива?
Люди, помогите! У меня есть массив с несколькими значениями, и есть функция, которая принимает определенное количество переменных, но сколько - неизвестно. Например,
array = ['val_1', 'val_2']
def function(val_1, val_2):
pass
А нужно сделать вот что: если количество элементов массива соответствует количеству параметров функции, то надо вызвать эту функцию, а в качестве параметров передать элементы массива. Именно его элементы, а не сам массив. А как это сделать? Меня именно интересует, как разложить массив на отдельные переменные и вызвать эту функцию, ведь размер массива нам неизвестен, как и количество параметров функции. То есть вариант ниже не подойдет.
function(array[0], array[1])
Ответы (2 шт):
Используйте *args:
In [9]: list_ = [1, 2, 3, 4 ,5]
In [10]: def foo(*args):
...: return args
...:
In [11]: foo(*list_)
Out[11]: (1, 2, 3, 4, 5)
Если нужно точное соответствие по кол-ву параметров:
In [18]: def foo(a, b, c):
...: pass
...:
In [19]: if len(list_) == foo.__code__.co_argcount:
...: foo(*list_)
def func(*args) :
pass
m = [1,2,3]
func(*m)
Внутри функции через args уже обращайтесь к значениям