6
함수가 있습니다. fun(f, x, y)
여기서 x와 y는 숫자이고 f는 "1/x ** 2 + y"
과 같은 함수를 지정하는 문자열입니다.Python은 eval 함수를 저장합니다
이 함수는 f
을 몇 백만 번 말하면 좋고 각각 x
및 y
의 값이 각 용도 사이에서 변경됩니다.
따라서 eval(f)
을 호출하면 매번 함수의 값을 계산하는 것보다 상당한 시간이 걸립니다. (측정 된 경우 약 50x)
f
이 함수를 저장하는 방법이 없으므로 eval
을 한 번만 호출해야합니까?
추신. 여기에 eval
을 사용하는 (안전하지 않은) 안전성에 대해 논의하지 마십시오. 알고 있습니다. 그러나이 코드는 제 3자가 실행하는 곳이나 내 질문과 관련이 없습니다.
왜 함수를 문자열로 저장해야합니까? –
사용자가 입력합니다. – Torn
또 다른 옵션은 표현식을 코드 객체로 미리 컴파일하는 것이지만 Jean-François의 기술은 거의 두 배 빠릅니다. –