Параметр 'rr' является переменной, отличной от глобальной переменной 'rr'. f(5)
возвращает выражение с глобальной переменной 'rr' и не использует параметр.
Чтобы добиться того, что вы пытаетесь сделать, замените глобальный параметр значением локального параметра:
import sympy as sy
rr = sy.Symbol('r')
exps = 4*rr+5
def f(param_rr):
return exps.subs({rr: param_rr}).simplify()
print(f(5))
Если вам нужно многократно вызывать функцию и не использовать выражения Symboli c в качестве параметра, есть lambdify
, который преобразует функцию symboli c для обычной Python функции:
lam_f = sy.lambdify(rr, f(rr))
print(lam_f(7))
Обычно такая функция используется вместе с numpy для работы с целыми массивами в одном go:
import numpy as np
print(lam_f(np.arange(1, 101)))