一、函数对象之函数名
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