Python中的参数命名约定

Python中的参数命名约定,python,coding-style,naming-conventions,Python,Coding Style,Naming Conventions,对于具有密切相关形式参数的函数,例如 def add_two_numbers(n1, n2): return n1 + n2 def multiply_two_numbers(n1, n2): return n1 * n2 如上所示,为两个函数中的参数指定相同的名称是一个好主意吗 另一种方法是重命名其中一个函数中的参数。例如: def add_two_numbers(num1, num2): return num1 + num2 在两个函数中保持它们相同看起来更加一

对于具有密切相关形式参数的函数,例如

def add_two_numbers(n1, n2):
    return n1 + n2

def multiply_two_numbers(n1, n2):
    return n1 * n2
如上所示,为两个函数中的参数指定相同的名称是一个好主意吗

另一种方法是重命名其中一个函数中的参数。例如:

def add_two_numbers(num1, num2):
    return num1 + num2
在两个函数中保持它们相同看起来更加一致,因为每个函数的参数都是类似的,但这是否更令人困惑呢

同样,下面的例子哪一个更好

def count(steps1, steps2):
    a = 0
    b = 0

    for i in range(steps1):
        a += 1

    for j in range(steps2):
        b += 1

    return a, b

def do_a_count(steps1, steps2):
    print "Counting first and second steps..."
    print count(steps1, steps2)
否则,更改第二个函数中的参数会得到:

def do_a_count(s1, s2):
    print "Counting first and second steps..."
    print count(s1, s2)

再一次,我有点不确定哪种方式最好。保持相同的参数名称可以使这两个函数之间的关系更加清晰,而第二种方法意味着不可能混淆这两个函数中的参数

我做了一些搜索(包括浏览PEP-8),但找不到确切的答案。(我发现类似的问题包括: 和
)除非你有充分的理由使用不同的名字,否则我会保持名字不变。。。请记住,即使是位置参数也可以通过关键字调用,例如:

>>> def foo(a,b):
...     print a
...     print b
... 
>>> foo(b=2,a=1)

保持“关键字”相同,在这个罕见的,但合法的角情况下…

一般来说,你应该给你的函数的参数名称是有意义的,甚至不考虑任何与其他函数相关的当你选择那些名字时。两个函数的参数名称根本没有任何关系,即使函数做相似的事情


虽然。。。如果函数做了类似的事情,可能这表明您错过了重构?:)

这里的重要指导原则是,您应该给他们合理的名字,理想情况下是您在一年后返回代码时猜测参数的名字

每个程序员都有一套约定。有些人喜欢调用二进制函数的整数参数
n1
n2
;其他如
n
m
;或
lhs
rhs
;或者别的什么。只要你选择一个并坚持它(只要它是合理的),任何人都可以阅读你的代码,并理解它,几秒钟后学习你的风格。如果你在各地使用不同的名字,他们将不得不做更多的猜测

正如mgilson所指出的,这允许您在需要时使用关键字参数。这也意味着当您看到弹出的
(…n1…,…n2…)
时,具有自动完成功能的IDE更有用,因为您知道要传递两个整数。但主要是为了可读性


当然,如果有不同的含义,就给它们起不同的名字。在某些情况下,让
加两个数(augend,addend)
乘两个数(factor,被乘数)

“而第二种方法意味着不可能混淆这两个函数中的参数。”你能举一个你担心的混淆类型的例子吗?在这些情况下,把它们混在一起的可能性不大(一般来说可能是这样的…),我想我更多的是考虑使用相同的名称作为变量的参数,这可能不是一个好主意。