• Python局部、全局、Global变量


    一、任务描述

      本实验任务主要对Python的局部、全局变量进行一些基本操作,通过完成本实验任务,要求学生熟练掌握Python的局部、全局变量。并对Python局部、全局变量的基本操作进行整理并填写工作任务报告。

    二、任务目标

    1、掌握Python的局部变量

    2、掌握Python的全局变量

    3、掌握Python的Global变量

    三、任务环境

    Ubuntu16.04、Python2.7

    四、任务分析

      全局变量与局部变量两者的本质区别就是在于作用域。用通俗的话来理解的话,全局变量是在整个py文件中声明,全局范围内都可以访问。局部变量是在某个函数中声明的,只能在该函数中调用它,如果试图在超出范围的地方调用,程序就爆掉了。如果在函数内部定义与某个全局变量一样名称的局部变量,就可能会导致意外的效果。因此不建议这样使用,这样会使得程序很不健全。

     ♥ 温馨提示
    在函数中,如果想给全局变量赋值,则需要用关键字global声明。

    五、任务步骤

    步骤1、环境准备

      右击Ubuntu操作系统桌面,从弹出菜单中选择【Open in Terminal】命令打开终端。

      通过【cd /home】切换到home目录下。【ls】查看该目录下的多有内容。

    图1 切换目录

    【mkdir variable】在home目录下创建variable文件夹。

    图2 创建文件夹

    步骤2、局部变量

      函数内部的变量名如果第一次出现,且出现在=前面,即被视为定义一个局部变量,不管全局域中有没有用到该变量名,函数中使用的将是局部变量。

      【cd variable】切换到variable目录下,【vim var1.py】回车后创建并编辑名为var1的Python文件。

    图3 创建Python文件

      回车后进入编辑框内,按键盘【i】进入编辑状态,输入如下程序。

      定义全局变量num,函数func内部定义局部变量num,通过main方法调用函数func()。

    图4 编辑Python文件

      编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框,【python var1.py】执行var1的Python文件。

      根据输出的结果判断函数中定义的num局部变量会将全局变量覆盖。

    图5 运行Python文件

      再次进入var1.py文件编辑状态,修改程序。

    图6 编辑Python文件

      再次运行var1.py程序出现‘num’没有被定义的错误。

      错误提示局部变量num在赋值前被应用,也就是该变量没有定义就使用它,由此再次证明了这里定义了一个局部变量,而不是使用的全局的num。

    图7 运行Python文件

    步骤3、全局变量

      函数内部的变量名如果第一次出现,且出现在=后面,且该变量在全局域中已定义,则这里将引用全局变量,如果该变量在全局域中没有定义,当然会出现“变量未定义”的错误。

      【vim var2.py】回车后创建并编辑名为var2的Python文件。

    图8 创建Python文件

      回车后进入编辑框内,按键盘【i】进入编辑状态,输入如下程序。

      定义全局变量num,函数func内部定义x = num + 100,通过main方法调用函数func()。

    图9 编辑Python文件

      编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框,【python var2.py】执行var2的Python文件。

      根据输出的结果判断函数中使用的num是全局变量num。

      只要是使用变量,而该变量在全局域中有定义,而在局部没有定义,则会使用全局变量。

    图10 运行Python文件

      再次进入var2.py文件编辑状态,修改程序。

      在函数内部定义局部变量num = 50。

    图11 编辑Python文件

      再次运行var2.py文件,根据结果得知使用的变量在全局域中有定义,在局部域中也有定义,则默认会使用局部变量。

    图12 运行Python文件

    步骤4、global变量

      在函数中,如果想给全局变量赋值,则需要用关键字global声明。

      【vim var3.py】回车后创建并编辑名为var3的Python文件。

    图13 创建Python文件

      回车后进入编辑框内,按键盘【i】进入编辑状态,输入如下程序。

      定义全局变量num,函数func内部为num变量添加global,修改全部变量num,通过main方法依次调用函数func(),全部变量num。

    图14 编辑Python文件

      编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框,【python var3.py】执行var3的Python文件。

      根据结果判断函数中给num赋值为200是修改的全局变量,而且这里没有定义新的局部变量。

    图15 运行Python文件

      再次进入var3.py文件编辑状态,修改程序。

      添加num += 60,修改num的值。

    图16 编辑Python文件

      再次运行var2.py文件,根据结果判断后续操作num也是操作的全局变量。

    图17 运行Python文件
  • 相关阅读:
    Spring中的@Transactional以及事务的详细介绍
    Shiro缓存使用Redis、Ehcache、自带的MpCache实现的三种方式实例
    使用shiro缓存用户身份信息的时候报:java.io.NotSerializableException: org.apache.shiro.util.SimpleByteSource
    rocketmq 延时消息
    用区块链技术做一个 不可被修改的 恋爱记录 app 我叫<<誓言>>
    java 调用区块链 发布和调用智能合约
    centos 以太坊多节点私链搭建
    数据库的死锁原因 和 处理办法
    聚簇索引
    Java 容易疑惑的一些杂记录
  • 原文地址:https://www.cnblogs.com/yu-1104/p/9050495.html
Copyright © 2020-2023  润新知