Найти - Пользователи
Полная версия: Проблема с вызовом функции
Начало » Python для новичков » Проблема с вызовом функции
1
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) на сроке с вызовом своей функции. Раньше с таким подходом не сталкивался и не совсем понимаю в чем ошибка.
maxwell
voltron, всё таки полный код был бы лучше. Во всяком случае у меня такой подход работает.
Dr.Ziko
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) на сроке с вызовом своей функции. Раньше с таким подходом не сталкивался и не совсем понимаю в чем ошибка.
В одном классе всё объявлено? Да и полный текст был бы лучше
voltron
В этом файле классов нет, только функции.
Кажется, нашел и исправил ошибку. В другом файле, который импортируется есть функции с такими же именами, но другим количеством аргументов. Сделал разные имена и все заработало
gnom
Это python 3?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB