nonlocal用法
name = 'alex' #name=‘lhf’
def change_name():
name='lhf'
# global name
# name = 'lhf'
# print(name)
# name='aaaa' #name='bbb'
def foo():
#name = 'wu'
nonlocal name
name='bbbb'
print(name)
print(name) #输出函数中的对应缩进的变量
foo() #输出调用函数变量
print(name) #输出调用函数变量
change_name()
print(name) #输出全局变量
'''
lhf
bbbb
bbbb
alex
'''
风湿理论:函数即变量
#高阶函数1。函数接收的参数是一个函数名 2#返回值中包含函数
# 把函数当作参数传给另外一个函数
# def foo(n): #n=bar
# print(n)
#
# def bar(name):
# print('my name is %s' %name)
#
# # foo(bar)
# # foo(bar())
# foo(bar('alex'))
#返回值中包含函数
def bar():
print('from bar')
def foo():
print('from foo')
return bar
print('0'*20)
c=bar()
print('1'*20)
n=foo()
print('2'*20)
print(n)
print('3'*20)
n()
def hanle():
print('from handle')
return hanle
print('4'*20)
h=hanle()
print('5'*20)
h()
def test1():
print('from test1')
def test2():
print('from handle')
return test1()
print('6'*20)
s=test2()
print('7'*20)
print(s)
'''
00000000000000000000
from bar
11111111111111111111
from foo
22222222222222222222
<function bar at 0x00000000005CC1E0>
33333333333333333333
from bar
44444444444444444444
from handle
55555555555555555555
from handle
66666666666666666666
from handle
from test1
77777777777777777777
None
'''
递归:
匿名函数:
编程方法论
1、面向过程
2、函数式
3、面向对象