Вам следует использовать словарь, сопоставляющий действительные имена оконных функций с действительными функциями:
windows = {"bartlett": numpy.bartlett,
"blackman": numpy.blackman,
"hamming": numpy.hamming,
"hanning": numpy.hanning,
"kaiser": numpy.kaiser}
Если вы используете eval()
, пользователю в основном разрешено выполнять произвольный код.
Вариант
w = vars(numpy)[window](11)
определенно лучше, чем использование eval()
, но он все еще не гарантирует, что функция, выбранная пользователем, имеет смысл в данном контексте.(И обычно вместо этого вы используете getattr()
.)