Можно ли переопределить функцию во время выполнения в Python? - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть небольшой проект для моего класса численного анализа, где я должен оценить несколько функций, используя разные методы, чтобы мы могли сравнить производительность и эффективность этих методов.Хотя большая часть моего кода работает нормально, одной из функций, которую мы должны оценить, является корень куба из x.Поскольку python использует основной корень, это приводит к расхождению методов.Я хочу иметь возможность использовать одно имя функции, чтобы мне не нужно было копировать и вставлять все, когда мне нужно использовать корневую функцию куба.Есть ли способ переопределить функцию во время выполнения?У меня нет реализованных классов, поэтому я не хочу вводить класс, если это возможно.Спасибо.

РЕДАКТИРОВАТЬ: моя основная функция такова:

def main():
    global func, derv
    func = 'pow(x,2)*sin(x)'
    derv = '2*x*sin(x)+pow(x,2)*cos(x)'
    print('evaluating x^2sin(x): ')
    newton(-0.2,10**-4,20)
    bisection(-0.9,1,10**-4,20)
    fixed(-0.2,10**-4,20)

    func = 'pow(x,2)*sin(x)-x'
    derv = '2*x*sin(x)+pow(x,2)*cos(x)-1'
    print('evaluating x^2sin(x)-x: ')
    newton(-0.2,10**-4,20)
    bisection(-0.9,1,10**-4,20)
    fixed(-0.2,10**-4,20)

    func = 'pow(x,1/3'
    derv = '(1/3)*pow(x,(-2/3)'
    print('evaluating cuberoot(x): ')
    newton(-0.2,10**-4,20)
    bisection(-0.9,1,10**-4,20)
    fixed(-0.2,10**-4,20)

, а мои функции / производные функции:

def function(x):
    y = eval(func)
    return y

def function(x):
    y = eval(func)
    return y

функция и производные функции используются вдругие функции для оценки чисел для численных методов, которые я использую.Для корневой функции куба, поскольку методы будут иметь значения, отражающиеся между отрицательными и положительными числами, мне потребуется создать функцию или что-то еще, чтобы вернуть действительное значение.

...