python中函数的参数命名约定

2024-10-03 11:14:14 发布

您现在位置:Python中文网/ 问答频道 /正文

这不是什么大问题,但它困扰着我,所以我决定寻求灵感。在

假设函数定义如下:

def store(book=None, author=None):
    pass

当像这样调用此函数时:

^{pr2}$

我会因为book=book和{}而害怕副作用吗?我倾向于重新定义函数

def store(thebook=None, theauthor=None):
    pass

但似乎有点冗长。有什么建议吗?在


Tags: store函数none定义defpass建议author
3条回答

首先,说store(book=book, author=author)没有歧义或副作用。解释器可以区分参数名和一般名。在

现在,关于您问题的第二部分,我认为您不应该更改函数参数的名称:毕竟,store()在一般意义上是从bookauthor执行它的工作。在

但是,局部变量可能更精确地表示它们包含的内容。他们可能不会引用任何书籍或作者,而是指具有特定特征的书籍或作者,例如,当前的书籍或畅销书的作者。在

所以,如果你想消除名字的歧义,我建议你改名局部变量。在

你不会有副作用。这在语义上和你刚才打电话没有什么不同

store(book, author)

这些值存储在函数作用域内的新变量中,并遵循所有常规的python作用域规则。在

如果需要的话,关键字参数可以让您自由地使用其他更具体的变量名。名称book和{}非常通用,这在函数中是合适的,它们应该是可重用的,因此更抽象一些。但是在调用范围内使用更具体的名称可能是合适的。从这个角度看,thebook和{}与{}和{}没有什么不同;你应该做一些更像——比如说local_book或{}——或者更准确地描述这本书的任何东西。在

没有,不会有任何副作用。在

调用函数的变量的名称空间和调用函数的参数的名称空间是分开的,不能相互影响。在

相关问题 更多 >