2014-12-30 2 views
0

Есть ли способ, чтобы функция/метод python принимала несколько kwargs, которые являются тем же ключом?Метод Python, использующий несколько одинаковых kwargs

Пример:

def foo(**kwargs): 
    print kwargs['a'] 

foo(a=1, a=2) 
[1, 2] 

Или что-то вдоль линий этого.

Я знаю, что kwargs не будет стандартным словарем в этой точке. У меня такое чувство, что я уже знаю ответ на этот вопрос, но решил, что где-то в мета-классах существует черная магия.

Я пытаюсь подражать другому языку как можно ближе. TitanDB имеет язык запросов наверх гном и Gremlin методы принимают ключевое слово арг, которые повторяют

g.v(256).outE(label='knows', label='likes').inV 

Я хотел бы остаться как можно ближе к этому, насколько это возможно.

+1

Что вы пытаетесь сделать? Если вы объясните проблему, вы можете найти более простой подход. –

+0

Да, зачем вам это делать, а не 'a = [1,2]'? Вы пытаетесь передать или наследовать некоторые kwargs из иерархии классов или по умолчанию или что-то еще? Вам действительно нужно отступить от кода и описать, что вы пытаетесь сделать. – smci

+1

Вы действительно должны стараться избегать «имитировать другой язык» pardagim. Python - это Python, C - C, C++ - живой ад, и не будет встречаться. У Python есть шаблоны и синтаксис, которые он имеет по какой-то причине; пытаясь заставить другой набор пандагимов и узоров на нем просто ... неразумно. – Schilcote

ответ

1

Нет, вы не можете этого сделать. Не существует метаклассической магии, потому что этот синтаксис является незаконным в Python.

Что вы хотите получить, когда получите стоимость метки? Если вы хотите получить список или набор элементов, просто передайте список/tuple, то есть label = («знает», «любит»).

+0

приятно отметил, что это, по сути, синтаксическая ошибка. – shx2

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