函数名 函数嵌套 名称空间和作用域

一、函数对象之函数名

1.1 函数名传递

#函数名可以被传递
#函数返回值是返回给函数func(),带括号的 ,print(func())会输出返回值None,当然也会调用一次函数
#func 不带括号,是函数名,打印会输出一个地址,地址加()就会再次调用一次函数
def func():
    print('from func')

func() # 调用函数,显示from func,这个是print输出的结果 并不是函数的返回值
print(func())  # from func 和 None   相当于调用一次函数打印一次from fun  又输出一次函数返回值None

print(func) #<function func at 0x0000000001CF2E18>  不带括号是函数名,代表内存地址
f = func
print(f)  #<function func at 0x0000000001CF2E18>

f()  # from func  加括号相当于func(),那么就会调用一次函数
1.2 函数名可以被当做参数传递给其他函数
def func():
    print('from func')

def index(args):
    print(args)
    args()  #相当于func(),函数优先级最高,不在往下执行,直接跳到函数开始执行,执行完毕才开始打印下面的from index
    print('from index')
index(func)

<function func at 0x0000000002052E18>
from func
from index
 

 1.3函数名可以被当做函数的返回值

ef index():
    print('index')

def func():
    print('func')  #func
    return index  #即 func()= index ,那么func()()=res()=index()=调用函数

res = func()
print(res)  #<function index at 0x0000000002032E18>  相当于输出函数返回值
res()  #index   相当于index()  开始调用函数


func
<function index at 0x00000000001D2E18>
index
 

猜你喜欢

转载自www.cnblogs.com/xp1315458571/p/11164905.html