Python 函数内的句柄TypeError

Python 函数内的句柄TypeError,python,python-3.x,Python,Python 3.x,我想在函数内部而不是外部处理TypeError。可能吗??当我忘记args而不是程序失败时,我需要得到一条消息 def numbers(a, b): print(a + b) numbers() >>>TypeError: numbers() missing 2 required positional arguments: 'a' and 'b' try: numbers() except TypeError: print("ARGS") 解: de

我想在函数内部而不是外部处理TypeError。可能吗??当我忘记args而不是程序失败时,我需要得到一条消息

def numbers(a, b):
   print(a + b)

numbers()

>>>TypeError: numbers() missing 2 required positional arguments: 'a' and 'b'
try:
    numbers()
except TypeError:
    print("ARGS")
解:

def numbers(*args):
    try:
        if len(args) == 2:
            a = args[0]
            b = args[1]
            print(a + b)
        elif len(args) > 2:
            print("Max args: 2")
        else:
            print("Add 2 args")
    except Exception as e:
        print(e)

您可以重构它并以更干净的方式处理参数:

def numbers(a=None, b=None): 
   if a==None or b==None: 
      return "Not enough arguments, two requried" 
   print(a + b) 

numbers() 

不,你不能在函数内部处理这个问题,因为这个错误意味着它永远不会被调用。你所指的不可能仅仅是因为你以错误的方式调用函数而产生错误。问题不在于函数,而在于调用函数的方式。默认参数呢<代码>def编号(a=无,b=无)?然后在函数中显式地处理参数?您可以为函数参数添加默认值,这样省略它们不会引起错误,如果这是您的意思的话。@HiroProgator这应该是这里的答案。。。对于未来的读者来说:不要这样做。默认行为(例外)比这要好得多。总是。不过,默认参数对于不同的用途非常有用。