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

      

  • 相关阅读:
    webpack / vue项目 config/index.js配置(用于配置webpack服务器代理)
    vue实现两重列表集合,点击显示,点击隐藏的折叠效果,(默认显示集合最新一条数据,点击展开,显示集合所有数据)
    Vue 组件之间传值
    js实现把textarea通过换行或者回车把多行数字分割成数组,并且去掉数组中空的值。
    sublime text3 插件安装方法
    webpack配置sass模块的加载
    display:table和display:table-cell的妙用
    根据输入地址获得经纬度
    pytest 学习笔记二:兼容unittest、执行方式、生成报告
    pytest 学习笔记一:参数化与组织分层
  • 原文地址:https://www.cnblogs.com/YangWenYu-6/p/10098521.html
Copyright © 2011-2022 走看看