您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在python中将字符串转换为函数名称?

如何在python中将字符串转换为函数名称?

由于要接受用户输入,因此最安全的方法是准确定义有效输入:

dispatcher={'add':add}
w='add'
try:
    function=dispatcher[w]
except KeyError:
    raise ValueError('invalid input')

如果要评估像这样的字符串'add(3,4)',则可以使用安全的eval

eval('add(3,4)',{'__builtins__':None},dispatcher)

eval通常,将其应用于用户输入时可能会很危险。 由于 __builtins__已禁用, locals并且限制为,因此上述 方法更安全 dispatcher。比我聪明的人可能仍然会造成麻烦,但是我无法告诉您该怎么做。

即使eval(..., {'__builtins__':None}, dispatcher)是 将被施加到用户输入。如果有机会让恶意用户对自己的字符串进行评估,则恶意用户可以在您的计算机上运行任意功能eval

python 2022/1/1 18:32:55 有209人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶