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

时间:2015-02-17 19:27:53

标签: 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]

执行:

myfunct(a, b, c, d, .....n)                #OK!
myfunct(a, b, None, "y", None,....n)       #OK?

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

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

1 个答案:

答案 0 :(得分:15)

使用None表示“我没有提供这个论点”没有错。

您可以在代码中检查无:

if c is None:
    # do something
if d is not None:
    # do something else

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

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

myfunct(A, B, E, F)
相关问题