通过func1函数拿到func2函数的返回值
1.在全局调用函数
代码如下:
def func1():
def func2():
return "func2"
#函数名没有加括号的时候不算调用,只是个地址
print("函数内部",id(func2),func2)
return func2 #通过return将内部的函数地址返回
f2=func1() #执行函数需要加括号
a=f2() #执行func1函数内部的func2函数
print("打印func1内部的func2函数的返回值:",a)运行结果:
调试:
2.在局部调用函数
方法一:
代码如下:
def func1():
def func2():
return "func2"
f2=func2() #属于在局部调用函数
print(f2)
func1()运行结果:
方法二:
代码如下:
def func1():
def func2():
return "func2"
print("func2:",func2)#一个地址,没有调用函数
f2=func2 #函数地址赋值操作
print("f2:",f2)
#执行函数操作
print(func2(),"
",f2()) #局部
return func2
func1()运行结果:
3.传参
①
代码如下:
def func1(name):
def func2():
return "This is "+name
return func2
f2=func1("hello")
print(f2())运行结果:
②
代码如下:
def s1(z):
def s2(x,y):
return x*y*z
return s2
s2=s1(4)
sss=s2(2,3)
print(sss)运行结果:
不传参
1.运行原理
代码如下:
#添加的功能
def func1(host):
def func2():
print("你好英文:")
host() #主函数运行的位置
return func2
#主函数
def host():
print("hello")
func2=func1(host)
func2()运行结果:
2.基本使用
代码如下:
#添加的功能
def func1(host):
def func2():
print("你好英文:")
host() #主函数运行的位置
return func2
#主函数
@func1
def host():
print("hello")
host()运行结果:
传参
1.运行原理
代码如下:
def func1(host):
def func2(name):
print(name,"什么好吃")
host(name) #主函数运行的位置
print(name,"10元")
return func2
#主程序
def host(name):
print(name,"好吃的零食")
func2=func1(host)
func2("冰淇淋")运行结果:
2.基本使用
代码如下:
def func1(host):
def func2(name):
print(name,"什么好吃")
host(name) #主函数运行的位置
print(name,"10元")
return func2
#主程序
@func1
def host(name):
print(name,"好吃的零食")
host("冰淇淋")运行结果:
三.返回值
代码如下:
def func1(host):
def func2(name):
print(name,"什么好吃")
host(name) #主函数运行的位置
result=host(name)
print(name,"10元")
return result #装饰器的返回值在闭包内部返回的
return func2
#主程序
@func1
def host(name):
return name+"好吃的零食"
result=host("冰淇淋")
print(result)运行结果:
| 留言与评论(共有 0 条评论) “” |