将None传递给参数是否正确?

16 python

我试图理解是否一个好主意或不传递作为参数python等效的null; 我认为是无.

示例:您有一个接受n个参数的函数; 在一种情况下,我只需要第一个和第二个参数,所以不是用args和kwargs写一个长函数定义,而是操纵它们,我可以将null传递给其中一个参数.

def myfunct(a, b, c[optional], d[optional], e, f....n):
    [do something]
    if d=="y":
        [do something but use only a and b]
Run Code Online (Sandbox Code Playgroud)

执行:

myfunct(a, b, c, d, .....n)                #OK!
myfunct(a, b, None, "y", None,....n)       #OK?
Run Code Online (Sandbox Code Playgroud)

这理论上不应该引发错误,因为null是我认为的值(这不是C++),虽然我不确定这是否是正确的做事方式.该函数知道当其中一个参数是特定值时存在一个条件,并且在这种情况下它不会要求除1以外的任何其他参数; 所以使用null的风险应该是0.

这是可以接受的,还是我可能会在未来使用这种方法引发问题?

rlb*_*ond 22

使用None来表示"我没有提供这个论点"没有错.

您可以在代码中检查无:

if c is None:
    # do something
if d is not None:
    # do something else
Run Code Online (Sandbox Code Playgroud)

我要做的一个建议是将None作为任何可选参数的默认参数:

def myfunct(a, b, e, f, c=None, d=None):
    # do something

myfunct(A, B, E, F)
Run Code Online (Sandbox Code Playgroud)

  • 您的第二个示例实际上不起作用 - 默认参数必须在*所有必需参数之后*. (4认同)
  • 注意`def myfunct(a,b,c = None,d = None,e,f):`是不合法的Python。 (3认同)