Is it correct to pass None to a parameter?

Question:

I am trying to understand if it is a good idea or not to pass as parameter the python equivalent of null; which I believe is None.

Example: You have a function that accepts n parameters; in one case I need just the first and second parameters, so instead of writing a long function definition with args and kwargs, and manipulate them, I can just pass null to one of the parameters.

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

Execution:

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

This theoretically should not raise an error, since null is a value I believe (this is not C++), although I am not sure if this is a correct way to do things.
The function knows that there is a condition when one of the parameters is a specific value, and in that case, it won’t ask for any other parameter but 1; so the risk of using null should be practically 0.

Is this acceptable or am I potentially causing issues down the road, using this approach?

Asked By: user393267

||

Answers:

There’s nothing wrong with using None to mean “I am not supplying this argument”.

You can check for None in your code:

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

One recommendation I would make is to have None be the default argument for any optional arguments:

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

myfunct(A, B, E, F)
Answered By: rlbond
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.