python中的全局变量与局部变量

1,局部变量与全局变量

1,定义

局部变量:就是在函数体内的变量,在python中冒号“:”后面的变量都是局部变量,当然局部与全局也是一个相对的概念。比如出现函数嵌套的情况。

全局变量:就是在模块中所有函数都可以调用的变量,一般在函数体外被定义。

 

2,使用过程

函数内的局部变量,在函数体外是不可以使用的,函数内的变量就是局部变量,只在函数体内生效。

python中的全局变量与局部变量

例如,这里的discount(price,rate)函数,两个形式参数price和rate,还有final_price都是函数的局部变量。

如果在函数体外使用就会出错。

 

全局变量,比如这里的old_price,rate和new_price都是全局变量。因此可以在函数体内访问他们。在python中,可以肆无忌惮地在函数体内部使用全局变量,但是如果在函数体内修改全局变量则会出错。

python中的全局变量与局部变量

 

python中的全局变量与局部变量

python中的全局变量与局部变量

其实,当在函数体内部调用全局变量时,是可以正常使用的,

但是当在函数体内部修改全局变量时,python是在函数体内部新创建了一个同名的局部变量,所以当我们在函数体内部打印该变量时,是修改后的值,但是当在程序外部打印正常的全局变量时,发现值并没有被修改。正如小甲鱼解释的一样。

 

如果一定要在函数体内部修改全局变量,可以在变量名前加 global关键字,如下所示:

python中的全局变量与局部变量

 

3,注意事项

注意:python出现这种现象是一种程序的保护机制,因为全局变量在很多地方都会使用,不建议在函数体内部修改全局变量,如果有这一类的操作,会导致程序很难维护。就像这里小甲鱼说的一样。

python中的全局变量与局部变量

 

如果你已经知道在函数中修改全局变量可能会导致可读性变差、出现莫名其妙的BUG、代码的维护成本成倍提高,但还是要坚持这么做,可以用global关键字来实现。

但是,如果遇到这种情况,思考一下,为什么要这么做,能不能把变量的位置挪到函数内部,让它变成局部变量。如果可以,就不要使用全局变量,然后再函数里修改的操作。

python中的全局变量与局部变量

原文链接:https://www.cnblogs.com/huayangshan/p/17350848.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python中的全局变量与局部变量 - Python技术站

(0)
上一篇 2023年4月25日
下一篇 2023年4月25日

相关文章

  • Python Matplotlib基本用法详解

    Python Matplotlib基本用法详解 简介 Matplotlib是一个用于创建高质量图表的Python库,它能够以各种硬拷贝格式和跨平台交互式环境生成出版物质量的图表。本攻略将介绍Matplotlib的基本使用方法,包括图表的类型、线条和标注的设置、字体的设置等等。 安装 在使用Matplotlib之前,需要先安装该库,可以使用以下命令进行安装: …

    python 2023年5月19日
    00
  • 使用python实现定时报天气的示例代码

    Python实现定时报天气攻略 天气是我们日常生活中非常重要的信息之一,使用Python可以方便地获取天气信息,并实现定时报天气的功能。本攻略将介绍使用Python实现定时报天气的示例代码,包括数据获取、数据处理、定时任务和示例。 步骤1:获取数据 在Python中,我们可以使用requests库获取天气数据。以下是获取天气数据的示例: import req…

    python 2023年5月15日
    00
  • Python NumPy教程之数组的基本操作详解

    Python NumPy教程之数组的基本操作详解 本教程将详细讲解在Python NumPy中如何进行数组的基本操作,本文主要内容包括: 数组创建 数组的维度 数组变形 数组切片 数组索引 数组创建 创建数组是使用NumPy的第一步。在NumPy中,数组可以通过多种方式创建。以下是一些常见的方式: 1. 使用array函数创建数组 最简单的创建数组的方法是使…

    python 2023年5月14日
    00
  • Python爬虫headers处理及网络超时问题解决方案

    Python爬虫headers处理及网络超时问题解决方案 简介 在使用Python进行爬虫开发时,会遇到对于爬虫脚本头部信息的设置和网络超时问题的解决。本文将详细讲述Python爬虫中headers的设置和超时问题的处理方法。 requests库中的headers设置 requests库是一个常用的Python爬虫库,其中的headers参数可以设置HTTP…

    python 2023年5月13日
    00
  • Python async模块使用方法杂谈

    Python async模块使用方法杂谈 Python async(协程)是近年来非常流行的一种异步编程模式。async通过事件循环机制和协程技术实现其非阻塞的异步效果,让我们能够更方便、高效地编写异步代码。在本文中,我们将详细讲解Python async模块的使用方法,并带有两个示例说明。 1.异步编程概述 在传统的编程模式中,当程序执行到一个耗时的I/O…

    python 2023年6月3日
    00
  • Vs Code中8个好用的python 扩展插件

    标题:Vs Code中8个好用的Python扩展插件 首先,为了更好的使用Vs Code编写Python代码,可以安装以下8个好用的Python扩展插件。 1. Python Python是一款由Microsoft官方提供的Vs Code扩展插件,可使Vs Code更好地解析Python代码,并可做到代码智能提示、语法高亮、代码补全、代码格式化等。安装方法为…

    python 2023年5月19日
    00
  • Python列表list解析操作示例【整数操作、字符操作、矩阵操作】

    以下是详细讲解“Python列表list解析操作示例【整数操作、字符操作、矩阵操作】”的完整攻略。 整数操作 在Python中,使用列表解来对整数列表进行操作。例如,可以将一个整数列表中的所有元素加1,代码如下: numbers = [1, 2, 3, 4, 5] new_numbers = [x + 1 for x in numbers] print(ne…

    python 2023年5月13日
    00
  • Python中的模块导入和读取键盘输入的方法

    Python是一种功能强大的编程语言,可以用于各种应用场景。本文将详细讲解Python中的模块导入和读取键盘输入的方法,包括如何导入模块、如何读取键盘输入等。 模块导入 要使用Python中的模块,我们需要先导入模块。以下是一个示例,演示如何导入Python中的math模块: import math print(math.pi) 在上面的示例中,我们使用im…

    python 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部