Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 2, 2011 21:38:13

voltron
От:
Зарегистрирован: 2009-04-23
Сообщения: 31
Репутация: +  2  -
Профиль   Отправить e-mail  

Проблема с вызовом функции

В одном проекте наткнулся на такой вот код для вычисления значений функций

func = { "sin": numpy.sin,
"asin": numpy.arcsin,
"cos": numpy.cos,
"acos": numpy.arccos,
"tan": numpy.tan,
"atan": numpy.arctan,
"exp": numpy.exp,
"log": numpy.log }
....
....
if op in func:
arg = evaluateStack( a, b, c )
return func[ op ]( arg )
Используются функции с одним аргументом из пакета NumPy. Потребовалось добавить к этому списку несколько своих функций с тремя аргументами. Описал эти функции, расширил словарь
def my_func(x, y, z):
return ....

func = { "sin": numpy.sin,
"asin": numpy.arcsin,
"cos": numpy.cos,
"acos": numpy.arccos,
"tan": numpy.tan,
"atan": numpy.arctan,
"exp": numpy.exp,
"log": numpy.log,
"myf": my_func }
....
....
if op in func:
if op == "myf":
arg1=...
arg2=...
arg3=...
return func[ op ]( arg1, arg2, arg3 )
arg = evaluateStack( a, b, c )
return func[ op ]( arg )
При выполнении получаю ошибку TypeError: __call__() takes exactly 2 arguments (4 given) на сроке с вызовом своей функции. Раньше с таким подходом не сталкивался и не совсем понимаю в чем ошибка.



Офлайн

#2 Фев. 3, 2011 00:40:04

maxwell
От:
Зарегистрирован: 2008-08-26
Сообщения: 111
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с вызовом функции

voltron, всё таки полный код был бы лучше. Во всяком случае у меня такой подход работает.



Офлайн

#3 Фев. 3, 2011 13:48:51

Dr.Ziko
От:
Зарегистрирован: 2011-01-28
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с вызовом функции

voltron
В одном проекте наткнулся на такой вот код для вычисления значений функций
func = { "sin": numpy.sin,
"asin": numpy.arcsin,
"cos": numpy.cos,
"acos": numpy.arccos,
"tan": numpy.tan,
"atan": numpy.arctan,
"exp": numpy.exp,
"log": numpy.log }
....
....
if op in func:
arg = evaluateStack( a, b, c )
return func[ op ]( arg )
Используются функции с одним аргументом из пакета NumPy. Потребовалось добавить к этому списку несколько своих функций с тремя аргументами. Описал эти функции, расширил словарь
def my_func(x, y, z):
return ....

func = { "sin": numpy.sin,
"asin": numpy.arcsin,
"cos": numpy.cos,
"acos": numpy.arccos,
"tan": numpy.tan,
"atan": numpy.arctan,
"exp": numpy.exp,
"log": numpy.log,
"myf": my_func }
....
....
if op in func:
if op == "myf":
arg1=...
arg2=...
arg3=...
return func[ op ]( arg1, arg2, arg3 )
arg = evaluateStack( a, b, c )
return func[ op ]( arg )
При выполнении получаю ошибку TypeError: __call__() takes exactly 2 arguments (4 given) на сроке с вызовом своей функции. Раньше с таким подходом не сталкивался и не совсем понимаю в чем ошибка.
В одном классе всё объявлено? Да и полный текст был бы лучше



Офлайн

#4 Фев. 3, 2011 14:28:09

voltron
От:
Зарегистрирован: 2009-04-23
Сообщения: 31
Репутация: +  2  -
Профиль   Отправить e-mail  

Проблема с вызовом функции

В этом файле классов нет, только функции.
Кажется, нашел и исправил ошибку. В другом файле, который импортируется есть функции с такими же именами, но другим количеством аргументов. Сделал разные имена и все заработало



Офлайн

#5 Фев. 5, 2011 21:26:25

gnom
От:
Зарегистрирован: 2010-09-07
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с вызовом функции

Это python 3?



Отредактировано (Фев. 5, 2011 21:26:58)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version