2015-12-14 4 views
-1

Если бы я создать функцию:Как сделать аргумент в кортеж?

def function(x, y): 
    """A simple function, but 'y' will be a tuple. 
    """ 
    function = (a*b) + x 

я хотел y быть (а, б), так что, когда речь идет о выводе на печать, я должен был бы сделать:

print function(3,(4, 5)) 
=23 

Где x равно 3, a равно 4, а b равно 5. Я понимаю, что могу это сделать без необходимости превращать аргумент в кортеж, но это назначение, которое мне дано, и я должен сделать это таким образом.

ответ

3

Распаковка y в a и b

>>> def function(x, y): 
...  """A simple function, but 'y' will be a tuple. 
...  """ 
...  a,b = y 
...  return (a*b) + x 
... 
>>> print function(3,(4, 5)) 
23 
1

Используя оператор печати, мы можем видеть, что Вы используете python2, так что вы можете распаковать кортеж в объявлении функции, как этот

def function(x, (a, b)): 
    """A simple function 
    """ 
    return (a * b) + x 

print function(3,(4, 5)) 

Этот синтаксис больше не разрешен в Python3, однако запуск сценария через «2to3» дает

def function(x, xxx_todo_changeme): 
    """A simple function 
    """ 
    (a, b) = xxx_todo_changeme 
    return (a * b) + x 
1

Вы также можете использовать operator LIB и распаковать с *:

from operator import mul 
def function(x, y): 
    """A simple function, but 'y' will be a tuple. 
     """ 
    return x + mul(*y) 

print(function(1,(3,4))) 

Выведет

13 
Смежные вопросы