python – 具有相同名称的参数和函数


Python任务中,我必须做以下两个函数:

move(board, move)
undomove(board, move)

有一个与函数同名的参数对我来说似乎是一个坏习惯.我已经联系了教授来改变它,但出于好奇,是否有可能从undomove内部调用move函数,或者在移动中使用递归?在这些函数中,move指的是参数.

(Python 3,如果重要的话)

最佳答案 你可以得到一个移动(功能),但它需要一些额外的体操.

def move(move):
    print(move,"inside move")

def undomove(move):
    print (move,"inside undomove")
    this_mod =__import__(__name__)
    this_mod.move(move)

if __name__ == '__main__':
    move(1)
    undomove(2)

但一般来说,我肯定会避免命名一个局部变量,其名称与我在该函数中需要的函数相同.

就风格而言,创建一个函数def move(move):…绝对有点奇怪,它会让随意的读者认为你正在尝试编写一个递归函数,所以我绝对会避免这种情况.当移动已经在模块范围内定义为函数时写入undomove(move)有点不那么奇怪了,但是它仍然可能会在快速浏览时引起混淆(它是一个局部变量吗?它是函数吗?)所以我可能会也避免那个.

点赞