python零基础学习关于第20讲的疑问。
在看小甲鱼的视频中,有类似这么一个题目:def fun1():
x=5
def fun2():
nonlocal x
x*=x
return x
return fun2()
fun1()
这里在return fun2()时,如果括号保留,就可以显示结果,但是改为return fun2后,就无法直接显示结果。请问:
1.有什么办法将结果显示出来呢?
2.这里的fun2()与fun2,到底有什么区别呢?小甲鱼在视频里面解释的不是很详细,我有点没有明白,能否帮忙解释一下。
谢谢。 里面没括号,外面填啊
fun1()() 如果没加括号,fun1就相当于返回了一个地址,需要在外面改成fun1()()来访问fun2 def fun1():
x = 5
def fun2():
nonlocal x
x *= x
return x
return fun2()# 这时 fun2()会调用 ,返回x,再将这个x,返回给a
# return fun2 时将这个函数fun2返回给a,即a = fun ,a()才能调用
a = fun1()
print(a) 本帖最后由 大马强 于 2021-8-2 22:39 编辑
以我上面的例子来说
当 returnfun2() 时,type(a) =<class 'int'>, 是一个整型,因为调用了fun2,返回x给了a, 可以直接使用 a
当 returnfun2 时 type(a) = <class 'function'> 是一个函数,调用的话得要 a = fun1()()或者 a() return Fun2不带括号的话
Fun1()→ Fun2
Fun1()() → Fun2()
return Fun2()带括号的话
Fun1()→Fun2()
你可以这么理解函数加不加括号
不带括号的函数指向一个地址,表明的是身份(比如说厨师)
带括号的函数表明的是调用该函数,这个身份做的事情(炒菜)
括号内的参数相当于食材(厨师炒萝卜) return Fun2不带括号的话
Fun1()→ Fun2
Fun1()() → Fun2()
return Fun2()带括号的话
Fun1()→Fun2()
你可以这么理解函数加不加括号
不带括号的函数指向一个地址,表明的是身份(比如说厨师)
带括号的函数表明的是调用该函数,这个身份做的事情(炒菜)
括号内的参数相当于食材(厨师炒萝卜)
页:
[1]