函数调用关系
主要是解释前几章看不懂的函数调用
1.python函数基础
def uop():
print(1)
return 2
uop()
函数名: uop
函数体:1~3行
返回值:2
调用函数:uop() ,只有见到这个括号(),程序会根据函数名从内存中找到函数体,然后执行它。
2.函数的执行顺序
def uop():
print(1)
def uop():
print(2)
uop()
# result :2
下面的uop将上面的fun覆盖掉了,因此,在Python中代码的放置位置是有要求的,不能随意摆放,函数体要放在被调用的语句之前。
3.函数的调用
第一种情况:
def x(fun):
def y():
print(1)
return y
def f():
print(2)
x(f)
#result:
x(f),注意:x(f)中的f没有加括号(),即f为参数。将f作为参数传入x(),x()中的y()函数返回的是y即函数名所以没有执行y函数。所以最终打印出为无结果。
第二种情况:
def x(fun):
def y():
print(1)
return y
def f():
print(2)
x(f())
# result : 2
x(f()),注意:x(f())中f后面是有括号的,即f作为函数传给x。将f()函数传给x()函数,先执行f()函数打印出2,再执行x()函数,因为x()中的y()函数返回的是y即函数名所以没有执行y函数。所以最终打印结果为2。
第三种情况:
def x(fun):
def y():
print(1)
return y()
def f():
print(2)
x(f)
# result :1
x(f),注意:x函数中的y函数返回的值是y函数,即return
y()。x(f)中f作为参数传给x函数,所以f()函数就不执行了,执行x函数,因为return
y(),所以执行y函数打印出1。最终打印结果为1。
第四种情况:
def x(fun):
def y():
print(1)
return y()
def f():
print(2)
x(f())
# result : 2 ; 1
x(f()),注意:x(f())中f后面是有括号的,即f作为函数传给x;x函数中的y函数返回的值是y函数,即return
y()。将f()函数传给x()函数,先执行f()函数打印出2,再执行x函数,因为return
y(),所以执行y函数打印出1。最终执行打印结果为2 1。
第五种情况:
def x(func):
def y():
print(1)
print(func())
return y()
def f():
print(2)
x(f)
# result : 1 ; 2
x(f),注意:x(f)中f后面没有括号,即f作为参数传入x()函数。将f作为参数带入x函数执行,因为return
y()所以执行y函数打印出1;再执行语句,此时相当于func()=f(),即开始执行f()函数打印出2。所以最终打印结果为1 2。
作者:Eamonze
时间:2020/12/5

本文详细探讨了Python函数调用的关系,包括函数基础、执行顺序、不同情况下的调用方式,如参数传递、函数作为返回值等,通过实例解析了函数调用的多种情况。
&spm=1001.2101.3001.5002&articleId=110728976&d=1&t=3&u=1a250be04d7e48da83dc8dbea17f545e)

被折叠的 条评论
为什么被折叠?



