простая функция назначения ошибки python

У меня есть вопрос о Sage/Python, но я уверен, что это очень общий вопрос CS. У меня есть большая система из N нелинейных уравнений с N переменными. Прежде чем передать его численному решателю, я пытаюсь позволить Сейджу упростить уравнения с помощью решения. При работе с простым примером у меня есть следующее: «eqa» — это список уравнений для решения в переменных x0, x1, w0, w1 и т. д. Следующее отлично работает из командной строки:

 j(x0,x1,w0,w1,y0,y1,z0,z1) = solve(eqa, var('x0 x1 w0 w1 y0 y1 z0 z1'))

(Я пытаюсь определить список уравнений как «вызываемое символьное выражение» (Sage), потому что числовая оптимизация, которую я использую, лучше работает с ними, чем с обычными функциями Python.)

В любом случае, когда я включаю это в скрипт и пытаюсь его загрузить, я получаю сообщение об ошибке:

     j(x0,x1,w0,w1,y0,y1,z0,z1) = solve(eqa, var('x0 x1 w0 w1 y0 y1 z0 z1'))
SyntaxError: can't assign to function call

Я знаю, что, должно быть, делаю что-то не так в командной строке, и это просто работает по какой-то глупой случайности. Или требуется особая осторожность при определении этих вызываемых символических выражений в скрипте? Спасибо за любую информацию, которую вы можете предоставить. Вот ссылка на разницу между этими типами «функций».

http://www.sagemath.org/doc/tutorial/tour_functions.html


person mcat    schedule 12.07.2012    source источник


Ответы (1)


Этот способ определения функций специфичен для Sage и запрещен стандартным синтаксисом Python. Я предполагаю, что либо (1) вы пытаетесь запустить свой скрипт с помощью Python, либо (2) вы используете Sage, но ваше имя файла заканчивается на .py, и поэтому Sage интерпретирует его как файл Python.

Например:

~/coding$ cat test.sage 
f(x, y) = 3*x+y
print f(3,4)

~/coding$ sage test.sage 
13
~/coding$ cp test.sage test.py
~/coding$ sage test.py
  File "test.py", line 1
    f(x, y) = 3*x+y
SyntaxError: can't assign to function call
~/coding$ python test.py
  File "test.py", line 1
    f(x, y) = 3*x+y
SyntaxError: can't assign to function call
person DSM    schedule 12.07.2012
comment
(2) была именно проблема. Спасибо большое! - person mcat; 12.07.2012