函数是第一类对象,意味着函数可以当作数据去使用
def foo(): print('from foo')
1、可以被引用
print(foo) func=foo print(func) func()
2、可以当作参数传给另外一个函数
def bar(x): #x=foo的内存地址 print(x) x() bar(foo)
3、可以当作函数的返回值
def bar(): return foo f=bar() # print(f is foo) f()
4、可以当作容器类型的元素
def f1(): print('from f1') def f2(): print('from f2') l=[f1,f2] print(l) l[1]() #------------------------------------------------ def pay(): print('pay function') def withdraw(): print('withdraw function') def auth(): print('auth function') def shopping(): print('shopping function') def transfer(): print('transfer function') func_dic={ '1':pay, '2':withdraw, '3':auth, '4':shopping, '5':transfer } # print(func_dic) # func_dic['2']() #------------------------------------------------- while True: print(""" 0 退出 1 支付 2 取款 3 认证 4 购物 5 转账 """) choice=input('请输入您要执行的操作:').strip() #choice='123' if choice == '0':break if choice not in func_dic: print('输入错误的指令,请重新输入') continue func_dic[choice]() #
函数的嵌套调用:在调用一个函数的时,其内部的代码又调用其他的函数
def bar(): print('from bar') def foo(): print('from foo') bar() foo() def max2(x,y): if x > y: return x else: return y def max4(a,b,c,d): res1=max2(a,b) res2=max2(res1,c) res3=max2(res2,d) return res3 print(max4(1,2,3,4))
函数的嵌套定义:在一个函数的内部又定义了另外一个函数
def f1(): x=1 def f2(): print('from f2') # print(x) # print(f2) # f2() # f1=10 # print(f1) f1() # f2() print(x)
函数对象、函数嵌套、名称空间与作用域、装饰器
链接:http://www.cnblogs.com/linhaifeng/articles/7532497.html