Python-函数名导入
我正在为游戏导入一个包,其中包含moveUp()、moveDown()、moveLeft()和moveRight()等函数。我正在尝试创建一个函数,将这些命令中的任何一个循环到指定的数字 我目前正在使用以下代码: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):
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
方法,该方法采用方向
参数