当前位置: 首页 > 面试题库 >

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

慕容恩
2023-03-14
问题内容

例如,如果我有一个add像这样的函数

def add(x,y):
    return x+y

我希望能够将字符串或输入转换为直接指向该函数,例如

w=raw_input('Please input the function you want to use')

要么

w='add'

有什么方法可以使用w来引用函数add吗?


问题答案:

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

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



 类似资料:
  • 问题内容: 我有一个来自MySQL查询的元组,像这样: 我想将所有字符串元素转换为整数,然后将它们放回列表列表中: 我试图用它来实现它,eval但是还没有得到任何体面的结果。 问题答案: 是Python标准的内置函数,用于将字符串转换为整数值。你可以使用包含数字作为参数的字符串来调用它,然后返回转换为整数的数字: 上面的照片2。 如果你知道列表T1的结构(它仅包含列表,仅一个级别),则可以在Pyt

  • 给定数字的字符串表示形式,如何将其转换为TypeScript中的类型?

  • 问题内容: 我想这些类型的值,转换的,,等多项。在JavaScript中,我们可以使用,但是PHP中有可用的类似方法吗? 问题答案: 通常不需要这样做,因为PHP在大多数情况下都会为您强制类型。对于那些你想显式转换型的情况下,_投_它:

  • 问题内容: 如何在python中将字节字符串转换为int? 这样说: 我想出了一个聪明/愚蠢的方法: 我知道必须有内置的东西或在标准库中可以更简单地执行此操作… 这与转换可以使用int(xxx,16)的十六进制数字字符串不同,但是我想转换为实际字节值的字符串。 更新: 我有点喜欢James的回答,因为它不需要导入另一个模块,但是Greg的方法更快: 我的骇客方法: 进一步更新: 有人在评论中问导入

  • 本文向大家介绍如何在Python 3中将字符串转换为字节?,包括了如何在Python 3中将字符串转换为字节?的使用技巧和注意事项,需要的朋友参考一下 要在Python 3中将字符串转换为字节,可以使用string类中的函数。例如,

  • 问题内容: 有没有一种方法可以在不使用Python定义架构的情况下将JSON字符串转换为Avro?还是只有Java才能处理的事情? 问题答案: Apache Avro™1.7.6入门(Python) :