这在python2.x上完美工作,但在python3.x上却不行

时间:2018-09-24 05:44:31

标签: python python-3.x python-2.7

import sys
print (sys.version) 

def add_pair((a,b),(c,d)):
    return a+c, b+d

print (add_pair((10,20),(30,40)))

这在python2.x上完美运行,但在python3.x上却不行

3 个答案:

答案 0 :(得分:2)

import sys
print(sys.version)

def add_pair(x,y):  
    ''' Unpack the tuples here e.g  a, b = x, c, d = y or as below (as per the req)''' 
    return(x[0]+y[0], x[1]+y[1])

print(add_pair((10,20),(30,40)))

Python3中不再支持元组参数:http://www.python.org/dev/peps/pep-3113/

在对该函数执行任何操作之前,必须打开元组的包装。

答案 1 :(得分:0)

我很惊讶它应该可以在2.x中运行,但是显然在函数参数中可以使用显式元组。但这绝不是很棒的风格。函数参数应仅用逗号分隔。两者均可使用:

def add_pair(pair1, pair2): 
    a, b = pair1
    c, d = pair2
    return a+c, b+d

print(add_pair((10, 20), (30, 40)))

答案 2 :(得分:0)

他们删除了python3中的unpacking of tuple parameter。因此,替代方法是这样或上面的答案中提到的:

def add_pair(*kwargs):
    return tuple(sum(i) for i in zip(*kwargs))

print(add_pair((10,20),(30,40)))
# (40, 60)