【问题标题】:How to use a string as an already exist list function in python?如何在python中使用字符串作为已经存在的列表函数?
【发布时间】:2022-01-17 15:34:24
【问题描述】:

我想使用一个字符串作为一个已经存在的列表函数。 例如,我从用户那里得到输入:'append'

如何直接使用这个字符串作为函数?

例如:

function_name = str(input(n)) # let say it is append
arr = []

arr.function_name(9)  #Of course it is not working because it is string. Not a function.

【问题讨论】:

  • 这种做法会导致巨大的安全问题!
  • 是的,我同意@VincentBénet 但我需要使用一段时间......因为我确信即将到来的输入将是python中的某个函数名称。

标签: python arrays string list


【解决方案1】:

使用getattr

>>> a = []
>>> getattr(a, 'append')(1)
>>> a
[1]

话虽如此,根据用户输入执行任意代码并不是最好的主意。您应该首先根据一组允许的方法检查输入。

【讨论】:

    【解决方案2】:

    您使用的方法不可行。

    但是你可以改用这个方法...

    function_name = str(input(n))
    arr = []
    
    if function_name == "append":
        arr.append(9)
    

    或者你可以使用getattr:

    function_name = str(input(n))
    arr = []
    
    getattr(arr, fucntion_name)(9)
    

    【讨论】:

    • 是的,我忘了补充。这是一个很少使用的项目。
    【解决方案3】:

    所有函数都是各自对象的属性。您可以使用getattr函数获取可调用的函数,然后调用它。

    例如。 ,

    function_name = str(input("")) # let say it is append
    arr = []
    
    #Get the attribute and call it
    # You can check if callable(function_to_call) to make sure its a function as well.
    function_to_call = getattr(arr, function_name)
    function_to_call(10)
    
    print(arr)
    

    【讨论】:

    • 谢谢@Kris 很有帮助
    猜你喜欢
    • 2020-09-02
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    • 2021-12-24
    • 2014-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多