Python中的参数命名约定

Ste*_*ude 3 python coding-style naming-conventions

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

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

def multiply_two_numbers(n1, n2):
    return n1 * n2
Run Code Online (Sandbox Code Playgroud)

如上所示,给两个函数中的参数赋予相同的名称是一个好主意吗?

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

def add_two_numbers(num1, num2):
    return num1 + num2
Run Code Online (Sandbox Code Playgroud)

在两个函数中保持相同看起来更加一致,因为每个函数所采用的参数都是类似的,但更令人困惑的是?

同样,对于下面的例子哪个更好?

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)
Run Code Online (Sandbox Code Playgroud)

否则,更改第二个函数中的参数会给出:

def do_a_count(s1, s2):
    print "Counting first and second steps..."
    print count(s1, s2)
Run Code Online (Sandbox Code Playgroud)

再说一遍,我不确定哪种方式最好.保持相同的参数名称使两个函数之间的关系更清晰,而第二个意味着不可能在两个函数中混淆参数.

我做了一些搜索(包括浏览PEP-8),但找不到明确的答案.(我发现的类似问题包括: python函数中的可选参数的命名练习Python中,避免对__init__参数和实例变量使用相同名称的最佳方法是什么?)

mgi*_*son 8

我会保持名称相同,除非你有充分的理由使用不同的名字......请记住,即使是位置参数也可以通过关键字来调用,例如:

>>> def foo(a,b):
...     print a
...     print b
... 
>>> foo(b=2,a=1)
Run Code Online (Sandbox Code Playgroud)

保持"关键字"相同有助于这个罕见但合法的角落案例......