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