Python 如何检查是否缺少参数

Python 如何检查是否缺少参数,python,Python,我写了这段代码: def suma(num1,num2): if(isinstance(num1,int)) or (isinstance(num2,int)) : if num1<0 or num2<0: print("iavo") elif num1!=int(num1)or num2!=int(num2): print("iao") else: suma_

我写了这段代码:

def suma(num1,num2):

    if(isinstance(num1,int)) or (isinstance(num2,int)) :
       if num1<0 or num2<0:
            print("iavo")
       elif num1!=int(num1)or num2!=int(num2):
            print("iao")
       else:
            suma_a = num1+num2
            return suma_a
    else:
        print("ia")
def suma(num1,num2):
如果(isinstance(num1,int))或(isinstance(num2,int)):

如果不同时发送两个数字,则该函数将抛出一个错误。在函数中不能省略参数

如果您这样做了,例如:

def summ(a, b=None):
    return a+b
然后您可以省略b,但是这将再次抛出不受支持的操作数错误,因为您无法添加数字和无

如果在其他函数的作用域中调用该函数,或者在类中调用该函数,则可以检查是否存在所有数字,您可以将其包装在try-except块中,并尝试处理错误,如最愚蠢的示例所示:

try: 
    summ(1)
except: 
    print("Missing arguments, you can't add numbers and None in Python!"\
          " Please send b.")

如果您不指定默认值,并且用户没有提供两个参数,那么在进入函数之前,您将得到一个
TypeError:suma()缺少1个必需的位置参数

def suma(num1=None,num2=None):
     # make sure user has entered two args and both are numbers
    if num1 is None or num2 is None:
        return "You Must choose two numbers"
    # rest of code

None
值在逻辑比较时返回False

检查两个参数是否丢失的简便方法可以是:

def suma(num1,num2):
    if not(num1 or num2):
        print('Missing both arguments')
这是你最初问的

但正如其他人所指出的,即使只遗漏一个参数,函数也会抛出异常

因此,如果要检查是否缺少任何参数,可以执行以下操作:

def suma(num1,num2):
    if not(num1 and num2):
        print('Missing at least one argument')
如果您希望参数的值为0,这将无法正常工作,因为它们在逻辑检查中的计算结果将为False。在这种情况下,您可以使用以下更正式的方法:

not(num1 is None or num2 is None)
not(num1 is None and num2 is None)
在你的声明中:

def suma(num1,num2):
    pass
如果有人仅使用一个参数调用
suma
,则函数将抛出错误

您可以通过断言参数的形式添加额外的检查,如下所示:

def suma(num1,num2):
    assert (num1 is not None)
    assert (num2 is not None)

这不是测试缺少的参数,而是测试提供的具有值
None
的参数。