zoukankan      html  css  js  c++  java
  • 函数的嵌套+nonlocal和global关键字(重点)

    1.在函数中声明函数
    在内部函数中使用变量的时候, 查找顺序: 先找自己 -> 上一层 -> 上一层..全局 -> 内置

    # 函数的互相调用
    # 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()
    

      

    2.nonlocal和global关键字(重点)
    global: 在局部引入全局变量
    nonlocal: 在局部...内层函数引入外层离他最近的那个变量.

    # 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()
    

      

  • 相关阅读:
    种子销售管理需求
    三角函数
    软件人性化的体现
    三角函数
    ProductManager
    不能说的秘密
    种子销售管理需求
    JTable使用
    不能说的秘密
    设计模式(了解篇)转载
  • 原文地址:https://www.cnblogs.com/YangWenYu-6/p/10098521.html
Copyright © 2011-2022 走看看