Python 函数的嵌套

Posted on 2018-12-07 20:20  缥缈映苍穹  阅读(173)  评论(0)    收藏  举报
# 函数的互相调用
def func1():
    print("我是神器的func1")

def func2():
    func1()
    print("我是神器的func2")

def func3():
    print("我是神器的func3")
    # func5()

def func4():
    func3()
    print("我是神器的func4")

def func5():
    func2()
    func3()
    print("我是神器的func5")

def func6():
    func5()
    print("我是神器的func6")
    func3()
    func1()

func6()

def outer():
    def inner():
        print("我的天哪")
    print("还可以这样写???")
    inner()

outer()

# inner() # 在全局不能找到局部的内容

def func1():
    print("1")
    def func2():
        print("2")
        def func3():
            print("3")
        print("4")
        func3()
        print(5)
    print("6")
    func2()
    print("7")

func1()


# 全局变量一般是不能随意的修改的
a = 10
def func():
    # 慎用.
    global a  # global 表示从全局把一个变量引入到局部, 后面使用的a都是全局变量
    a += 10 # ?? a = a + 10 # 现在的a是全局的, 你现在视图改全局变量
    print("里面的打印",a)
func()
print("外面的打印", a)


a = 10
def func():
    def inner():
        # 慎用.
        global a  # global 表示从全局把一个变量引入到局部, 后面使用的a都是全局变量
        a += 10 # ?? a = a + 10 # 现在的a是全局的, 你现在视图改全局变量
        print("里面的打印",a)
    inner()
func()
print("外面的打印", a)

# nonlocal  在局部, 寻找离他最近的外层的一个变量
a = 50
def func1():
    # a = 10 # 局部
    def func2():
        nonlocal a # 不找全局, global找全局
        a += 10 # a = a + 10 python不让这么干
        print("func2", a)
    func2()
    print(a)
func1()
print(a)

# 如果没有nonlocal和global 查找的顺序: 自己, 上一层, 上一层, 上一层

def func0():
    a = 50
    def func1():
        a = 10 # 局部
        def func2():
            nonlocal a # 不找全局, global找全局
            a += 10 # a = a + 10 python不让这么干
            print("func2", a)
        func2()
        print(a)
    func1()
    print(a)
func0()


a = 1
def fun_1():
    a = 2
    def fun_2():
        nonlocal a
        a = 3
        def fun_3():
            a = 4
            print(a)
        print(a)
        fun_3()
        print(a)
    print(a)
    fun_2()
    print(a)
print(a)
fun_1()
print(a)

flag = False

def login():
    global flag
    uname = input("用户名:")
    upwd = input("密码:")
    if uname == "alex" and upwd == "123":
        flag = True
    else:
        flag = False

def fatie():
    if flag == True:
        print("可以发帖")
    else:
        print("滚去登录")

login()

fatie()
fatie()
fatie()
fatie()