函数嵌套


def func():
    print(123)
    return True

def func2():
    print('start')
    ret=func()
    print('ret:',ret)
    print('stop')
    return  ret

ret2=func2()
print(ret2)

#函数修改全局变量
# a=1
# def func():
#     a=2
#     print(a)   # 2
# func()
# print(a)    # 1

#一面试题
# a=1
# def func():
#     #在局部可以查看全局的值
#     b=a+1#在局部可以引用全局的变量
#     #a=a+1 #报错,不能直接修改
#     print(b)   #  2
#
# func()
# print(a)    # 1


#非要修改   global   会改变全局变量的值,慎用
# a=1
# def func():
#     global a
#     a = a + 1
#     print(a)   # 2
#
# func()
# print(a)  #  2


#不要global     同引用
# a=1
# def func3():
#     return a+1
#
# ret3=func3()
# print(ret3)     # 2
# print(a)     # 1


# nonlocal   在局部的局部里调用,不常用,不用也能实现
#a=10
# def func4():
#     a=20
#     def func5():
#         nonlocal a #在局部,调用父级命名空间的变量,(不要也可以)
#         print('----',a)   #20
#     func5()
#     print('---->',a)     #20
#
# func4()
# print(a)  #  10