请问python中,如何将函数根据名称进行随机调用

请问,如下面所示意,定义了几个函数。我将函数名字写在一个列表当中。请问怎样可以通过随机选取函数的名字,从而直接调用这个函数来执行,并且获得返回结果呢?万分感谢各位

如下面示意,接下来要怎么写呢?本人刚开始自学python,实在遇到瓶颈,谢谢各位

import random

def run():
Pass
def eat():
Pass
def sleep():
Pass
def jump():
Pass

cat=[“run","eat","sleep","jump"]
action=random.sample(cat,2)

使用eval转换随机得到的函数名称,然后调用函数即可:


import random

def run(num):
 print('run',num)

def eat(num):
 print('eat',num)

def sleep(num):
 print('sleep',num)

def jump(num):
 print('jump',num)

cat=["run","eat","sleep","jump"]
action=random.sample(cat,2)
eval(action[0])(10)

运行结果:

img

eval('run()')
就是在调用了
用exec('run()')也行
或者你的list不要放字符串,直接放a=[run,eat]这样,然后执行a[0](),下标通过random随机

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇博客: python 类的定义与使用中的 pass是什么? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    • pass关键字表示是一个空语句
    • pass关键字的作用是用来占位,使程序正常运行
    # 定义一个关于车的类
    class Car(object):
        def info(self):
            print("this is a car")
    
    class Fly(object):
        pass
    
    # 实例化对象
    car = Car()
    
    # 调用对象方法
    car.info()
    

    运行结果

    this is a car
    
  • 以下回答来自chatgpt:

    可以通过以下步骤实现:

    1. 使用 random 模块中的 choice 函数从 func_names 列表中随机选择一个函数名称。
    2. 使用 globals() 函数获取全局命名空间中的函数,并将选择的函数名称作为字符串传入。
    3. 使用函数调用运算符 () 调用该函数,并将其返回值存储在变量中并返回。

    代码实现如下:

    import random
    
    def func1():
        return "Hello from func1"
    
    def func2():
        return "Greetings from func2"
    
    def func3():
        return "Salutations from func3"
    
    func_names = ['func1', 'func2', 'func3']
    
    def random_call():
        random_func = random.choice(func_names)
        func = globals()[random_func]
        return func()
    
    result = random_call()
    print(result)
    

    执行多次代码,每次结果都会不同,因为每次调用随机选择的函数。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^