python中函数名后加括号和不加括号的区别
麻烦老师这个函数中def funOut():
def funIn():
print('宾果!你成功访问到我啦!')
return funIn
funOut()()
和这个函数
def funOut():
def funIn():
print('宾果!你成功访问到我啦!')
return funIn()
funOut()
这两个函数中最后面return返回函数名一个有括号和一个没有括号这两个有什么区别。谢谢
有括号得到的是函数执行的返回值,
没有括号得到的是函数句柄,是一个可执行函数
return funIn是返回函数本身,return funIn()是返回函数的返回值。
例如
a = abs(-8),返回的是8
a= abs,返回的是abs函数本身,可以再a(-8),这时得到的是8 本帖最后由 Peteryo01223 于 2021-1-27 18:12 编辑
两个函数,结果一致。
1. return funIn,对应后面的 funOut()()。
2. return funIn(),对应后面的 funOut()。
其实可以这么简化地理解:一共就2个括号(),给谁不给谁,反正就两个(),总量不能变。
不带括号时,调用的是这个函数本身 ,是整个函数体,是一个函数对象,不需等该函数执行完成。
带括号(此时必须传入需要的参数),调用的是函数的return结果,需要等待函数执行完成的结果。 第一个函数中的返回值为funIn,所以最后要用funOut()(),也就是说“funOut()()”中,第一个括号是调用funOut函数,然后返回funIn,接着第二个括号再调用funIn。()
第二个函数中的返回值为funIn(),也就是finOut函数就是用来调用funIn的,所以就只需要一个括号来调用funOut。
冬雪雪冬 发表于 2021-1-27 17:38
return funIn是返回函数本身,return funIn()是返回函数的返回值。
例如
a = abs(-8),返回的是8
感谢老师的讲解
页:
[1]