You could just use Symbolics.jl
using Symbolics
function make_func(num::Int)
# Generate some variables
@variables v[1:num]
v = collect(v)
ex = sum(v)
f_oop, _= build_function([ex], v..., expression = Val{false})
f_oop
end
f_ = make_func(3)
f_(1,2,3)