2013-11-21 3 views
0

У меня есть код что-то вроде этого:питон 3.3.2 Функция Синтаксис определения нескольких параметров

a=1. 
b=2. 

c=(a,b) 

def test((a,b),c): 
    return a+b+c 

test(c,5) 

Тем не менее, говорит, что есть ошибка синтаксиса во втором paranthesis из: тест четкости ((а, б) , c)

Любые предложения? (Кстати это работает отлично для 2.6.1, у меня есть 3.3.2, я не смог найти каких-либо изменений синтаксиса относительно этого)

ответ

4

Эта особенность - параметр кортеж распаковка - был удален из Python 3: http://www.python.org/dev/peps/pep-3113/

Вы должны переписать код:

def test(a, b, c): 
    return a + b + c 

test(c[0], c[1], 5) 

или

def test(a, b): 
    return a[0] + a[1] + b 

test(c, 5) 
+0

ссылка на которую вы дали был очень полезным, ТНХ. – nicomedian

1

От What’s New In Python 3.0:

Tuple параметр распаковка удален. Вы больше не можете писать def foo(a, (b, c)): .... Вместо этого используйте def foo(a, b_c): b, c = b_c.

Связанные PEP: PEP 3113

+0

это помогло мне, THX – nicomedian

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