python的函数别名问题

 def inc(*x):
    def incx():
        y =0
        for n in x:
            y = y + n 
        return y 
    return incx 

a = inc 
print ('a(5,1)',a(5,1)) # 打印出了inc这个对象

# abs()

b = abs
print ('b = ',b(-10))

为啥print ('a(5,1)',a(5,1)) 打印出了inc这个对象
而print ('b = ',b(-10)) 打印了-10
就是因为inc函数有可变参数吗,a不是inc的别名吗?
abs不是也需要参数吗?

这是因为你的 a(5,1)它本身就是一个函数对象,所以打印的就是对象。
你要想打印数据,就需要执行函数

 print ('a(5,1)',a(5,1)())

a是inc的别名,b也是abs的别名.如果对这点有疑惑,可以稍加验证:

 id(a), id(inc)
 b is abs

inc和abs的不同在于,inc返回一个函数对象(incx),abs返回一个数值.
这点你可以验证一下:

 def abs(num):
     return -num if num < 0 else num