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

      

  • 相关阅读:
    AS将一个项目导入到另一个项目中
    Android Studio出现:Cause: unable to find valid certification path to requested target
    小米手机Toast带app名称
    PopupWindow 点击外部区域无法关闭的问题
    EditText inputType类型整理
    Fragment通过接口回调向父Activity传值
    Android selector一些坑
    Installation failed with message Failed to commit install session 634765663 with command cmd package
    旷视上海研究院机器人方向招聘
    语义SLAM的数据关联和语义定位(四)多目标测量概率模型
  • 原文地址:https://www.cnblogs.com/YangWenYu-6/p/10098521.html
Copyright © 2011-2022 走看看