Python中的全局变量
在本文章中,我们来讨论一下python中的全局变量,我们将学习如何定义全局变量,然后如何在函数中访问它们,以及如何在函数中修改全局变量的值。
全局变量:
python的代码结构一般按照shebang、import模块、全局变量、函数定义、执行代码的顺序进行编写,可以看出全局变量的定义处于比较靠前的位置,这样就避免了因为全局变量定义靠后,但python解释器逐行解释,以至于前面的代码无法识别局部变量的问题。
全局变量的作用域:
全局变量定义在函数的外部,在函数内部定义的变量称为局部变量,python程序中的所有部分都可以访问全局变量,局部变量只能在本函数内可用,并且在函数中,变量的使用顺序是:局部变量 > 全局变量,也就是说,如果局部变量和全局变量都用a表示,那么调用a时,函数会优先调用局部变量。
全局变量实例:
我们按照文章开头讲解的代码结构顺序,展示一个简单的全局变量的实例
输出:
变量"gl_result"是在函数外部定义的,因此,他是一个全局变量。
在函数内部对全局变量赋值
如果我们在函数内部对全局变量进行赋值操作,那么全局变量的值会改变吗?
输出:
可以看出,函数内部的gl_result的值已经被我们修改成100了,但是函数外部的变量值仍为1,说明通过调用函数,我们没能修改到全局变量的值,只能修改函数内部的值,这又是为什么呢?
因为,如果在函数内部定义了一个与全局变量相同名称的变量,那么函数就会认为这是在创建一个与全局变量名称相同的变量,所以我们实际修改到的值只是函数中的局部变量的值,并非我们想要修改的全局变量。我们通过pycharm的提示也可以看到
有一个shadows name在函数外部,在PyCharm中,函数内部的变量,如果和函数被调用的外部的变量一样的话,就会被叫做shadows name,不容易被觉察到。
那么我们就不能在函数内部修改全局变量的值吗?当然不是,在python的函数中可以通过global关键字,调用并修改全局变量的值!
在函数内部修改全局变量的值
我们只需要在需要使用全局变量的前一行代码加上global + 全局变量,就可以随意修改全局变量的值啦!
可以看出,pycharm这次就没再提示shadows name了,因为我们从头到尾都是在使用同一个变量,即全局变量。所以我们一定要牢记,想要对全局变量进行修改时,在函数内部一定要加上global关键字,不然函数就会自动创建一个局部变量,使人产生误解。
Tips:
1、注意查看pycharm的warning,有时候可以帮助我们避免bug
2、在创建全局变量是按照gl_ + 全局变量 或者 global_ + 全局变量的命名方式,可以帮助我们更好地区分全局变量和局部变量
有错误之处感谢指正,欢迎交流,一起学习!
Python中的全局变量相关推荐
- 在python中、关于全局变量和局部变量_在Python中,关于全局变量和局部变量,以下选项中描述不正确的是...
[单选题]Python文本处理方向的第三方库是 [单选题]哪个选项的描述是正确的? [单选题]以下选项中属于Python语言中合法的二进制整数是 [单选题]以下说法错误的是: [单选题]下面属于B2B ...
- python初始化方法对应的变量是全局变量嘛_在Python中初始化全局变量的正确方法...
我有一个初始化一些全局变量的 Python模块;这样的事情: #!/usr/bin/env python import re """My awesome python l ...
- python中的全局变量与局部变量
全局变量与局部变量两者的本质区别就是在于作用域,全局变量即在整个程序中,任何地方都可以访问.而局部变量,试着在函数内部声明的变量,当函数运行结束时,局部变量就会被内存释放. 例子: 1 name='z ...
- Python中的全局变量与局部变量2
from math import * import pandas as pd import numpy as np import matplotlib.pyplot as plt########### ...
- python中的全局变量和局部变量
加上 global : 表示声明要修改全局变量的内存地址.
- Python 中的全局变量
def fib(n):global memo, cntcnt += 1if n not in memo:memo[n] = fib(n-1) + fib(n-2)return memo[n]if __ ...
- [转载] python中全局变量和局部变量解析
参考链接: Python中的全局变量和局部变量 python函数中可以访问全局变量但是不能给全局变量赋值,除非进行显式声明global a 比如定义了全局变量 a 在函数my_fun()中可以直接访 ...
- python获取程序文件中的全局变量和局部变量的函数
目录 global()和locals()函数 (一)演示示例 (二)程序执行结果 (三)简单使用 (四)参考资料 global()和locals()函数 使用global()可以获取Python中的全 ...
- python中全局变量的定义及调用_python中定义全局变量
python中怎么定义全局变量 python中在哪些情况下必须使用global来声明全局变量 python class里面的全局变量问题 python中的本地变量(local variable)和全局 ...
最新文章
- 连接centos7桌面方法
- SpringMVC核心流程图
- scp连接linux网络错误,winscp连接linux(centos7)时提示主机超过15秒无通信,继续等待的解决方法...
- matlab2017调用vgg19,从VGG19的任意中间层中抽取特征
- coff2omf matlab,OMF和COFF格式有什么区别?
- E哥的Git教程(一)
- 怎么查看网站数据库服务器ip地址,怎么查看网站数据库服务器ip地址吗
- 第六章 图论 AcWing 1635. 最大集团
- Python亲戚计算器
- 北京数字认证bjca证书垃圾,报错:错误代码 EC999
- python刷题 NOI题库 python题解 洛谷、牛客网、AcWing 刷题等
- python人工智能课程设计_中小学课程设计:以计算思维培养为核心的人工智能课程设计与实践...
- 搜索新风口与营销新变量
- 开源阅读书源_超强小说阅读软件
- 第七章:混合策略与混合策略纳什均衡
- Ubuntu18.04 显卡GF-940MX安装NVIDIA-390.77
- 虚拟机安装WIN11,缺少计算机所需的介质驱动程序
- 机器学习之必备知识篇
- 自动进行统计分析的工具
- 使用js发送post请求
热门文章
- 10-248 7-1 将下述事实存入数据库:生产厂商C制造的型号为1100的PC机,速度240,内存32,硬盘2.5G,售价2499美元。
- 关闭linux退格键和vi发出的嘟嘟声
- 关于前端如何用原生实现刻度尺
- $.post html5,$.post(url,[data],[fn],[type])_jQuery之家-自由分享jQuery、html5、css3的插件库...
- html静态网站基于汉服文化网站网页设计与实现共计12个页面
- Fedora 23 配置
- 超实用的Java面试宝典
- 网游找call通杀方法之另辟蹊径
- 用Java写春联:一键自动发送微信祝福给喜欢的人【撩】
- python学习——相关软件汇总