Я бы предположил, что будет какой-то способ сделать это. Но я вынужден спросить, есть ли на самом деле достаточно большая разница в читаемость от этого
Allocation(Param1 = Val1, Param2 = Val2)
К этому:
Allocation(Param 1 = Val1, Param 2 = Val2)
, чтобы сделать эту большую разницу? Я уверен, что есть способ сделать то, что вы хотите сделать, но моя первая проблема заключается в том, что усилия будут стоить результата.
Моя цель - предоставить DSL, который может использоваться для ввода данных в систему. В приведенном выше сценарии параметрами будут имена людей, а значения будут процентами.
У меня есть лучшее понимание того, что вы хотите сделать сейчас, но я все же думаю, что вам, возможно, придется пожертвовать некоторой удобочитаемостью, чтобы получить то, что вы хотите. Лично я бы с чем-то вроде:
Allocation(
{ 'name1' : value1,
'name1' : value2, }
)
Если это не то, что вы можете пойти с, то вы, возможно, захотите пересмотреть, хотите ли вы использовать Python для вашего DSL или идти с чем-то доморощенный. Разрешение пробелов допускает слишком много двусмысленностей для большинства языков программирования.
Если вы все еще хотите преуспеть в использовании с помощью python, вы можете рассмотреть возможность публикации в C-API SIG (SIGS) или, возможно, python-dev list (в крайнем случае). Единственный способ, с помощью которого я мог бы это сделать, - включить интерпретатор python в программу C/C++ и сделать с ним какой-то хакинг (что может быть сложно!).
+1: имена параметров с пробелами не стоят агонии и на самом деле не помогают. Используйте _ вместо пробелов. – 2008-12-09 12:43:25