Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-函数名导入_Python - Fatal编程技术网

Python-函数名导入

Python-函数名导入,python,Python,我正在为游戏导入一个包,其中包含moveUp()、moveDown()、moveLeft()和moveRight()等函数。我正在尝试创建一个函数,将这些命令中的任何一个循环到指定的数字 我目前正在使用以下代码: def moveUpLoop(loopNo): for i in range(0, loopNo): world.moveUp() def moveDownLoop(loopNo): for i in range(0, loopNo):

我正在为游戏导入一个包,其中包含moveUp()、moveDown()、moveLeft()和moveRight()等函数。我正在尝试创建一个函数,将这些命令中的任何一个循环到指定的数字

我目前正在使用以下代码:

def moveUpLoop(loopNo):
    for i in range(0, loopNo):
        world.moveUp()

def moveDownLoop(loopNo):
    for i in range(0, loopNo):
        world.moveDown()

def moveLeftLoop(loopNo):
    for i in range(0, loopNo):
        world.moveLeft()

def moveRightLoop(loopNo):
    for i in range(0, loopNo):
        world.moveRight()
但是,我想使用如下内容:

def functionLoop(funcName, loopNo):
    for i in range(0, loopNo):
        world.funcName()

functionLoop(moveRight, 5)
当我尝试执行此操作时,会出现以下错误:

NameError:未定义全局名称“moveRight”

这有什么关系吗?谢谢你的帮助

def functionLoop(funcName, loopNo):
    for i in range(loopNo):
        getattr(world, funcName)()

functionLoop('moveRight')


getattr
是您正在寻找的函数。然而,这种模式似乎更适合字典:

direction_mapping = {
    "up": world.moveUp,
    "down": world.moveDown,
    "left": world.moveLeft,
    "right": world.moveRight
}

def move_loop(direction, loopno):
    direction_func = direction_mapping[direction]
    for i in range(loopno):
        direction_func()

move_loop("right", 5)

当然,在这一点上,我甚至可能会改变整个设计,使
world
有一个
move
方法,该方法采用
方向
参数。

getattr
就是您要寻找的函数。然而,这种模式似乎更适合字典:

direction_mapping = {
    "up": world.moveUp,
    "down": world.moveDown,
    "left": world.moveLeft,
    "right": world.moveRight
}

def move_loop(direction, loopno):
    direction_func = direction_mapping[direction]
    for i in range(loopno):
        direction_func()

move_loop("right", 5)

当然,在这一点上,我甚至可能会改变整个设计,使
world
有一个
move
方法,该方法采用
方向
参数。

getattr
就是您要寻找的函数。然而,这种模式似乎更适合字典:

direction_mapping = {
    "up": world.moveUp,
    "down": world.moveDown,
    "left": world.moveLeft,
    "right": world.moveRight
}

def move_loop(direction, loopno):
    direction_func = direction_mapping[direction]
    for i in range(loopno):
        direction_func()

move_loop("right", 5)

当然,在这一点上,我甚至可能会改变整个设计,使
world
有一个
move
方法,该方法采用
方向
参数。

getattr
就是您要寻找的函数。然而,这种模式似乎更适合字典:

direction_mapping = {
    "up": world.moveUp,
    "down": world.moveDown,
    "left": world.moveLeft,
    "right": world.moveRight
}

def move_loop(direction, loopno):
    direction_func = direction_mapping[direction]
    for i in range(loopno):
        direction_func()

move_loop("right", 5)
当然,在这一点上,我甚至可能会改变整个设计,以便
world
有一个
move
方法,该方法采用
方向
参数