Python中的全局变量如何理解


Posted in Python onJune 04, 2020

Python是一种面向对象的开发语言,在函数中使用全局变量,一般应作全局变量说明,只有在函数内经过说明的全局变量才能使用。

首先应该说明的是需要尽量避免使用Python全局变量。不同的模块都可以自由的访问全局变量,可能会导致全局变量的不可预知性。对全局变量,如果程序员甲修改了_a的值,这时可能导致程序中的错误。这种错误是很难发现和更正的。

全局变量降低了函数或模块之间的通用性,不同的函数或模块都要依赖于全局变量。同样,全局变量降低了代码的可读性,阅读者可能并不知道调用的某个变量是全局变量。 但是某些时候,Python全局变量能够解决局部变量所难以解决的问题。事物要一分为二。

python里面全局变量有两种灵活的用法:

gl.py:

gl_1 = 'hello'
gl_2 = 'world'

在其它模块中使用

a.py:

import gl 
def hello_world() 
 print gl.gl_1, gl.gl_2

b.py:

import gl 
def fun1() 
 gl.gl_1 = 'Hello'
 gl.gl_2 = 'World'
def modifyConstant() : 
  global CONSTANT 
  print CONSTANT 
  CONSTANT += 1
  return
if __name__ == '__main__' : 
  modifyConstant() 
  print CONSTANT

1 声明法

在文件开头声明Python全局变量variable, 在具体函数中使用该变量时,需要事先声明 global variable,否则系统将该变量视为局部变量。 CONSTANT = 0 (将全局变量大写便于识别)

2模块法

gl.py:

gl_1 = 'hello'
gl_2 = 'world'

在其它模块中使用

a.py:

import gl 
def hello_world() 
 print gl.gl_1, gl.gl_2

b.py:

import gl 
def fun1() 
 gl.gl_1 = 'Hello'
 gl.gl_2 = 'World'
def modifyConstant() : 
  global CONSTANT 
  print CONSTANT 
  CONSTANT += 1
  return
if __name__ == '__main__' : 
  modifyConstant() 
  print CONSTANT

内容扩展:

什么是局部变量

通俗定义:函数内部定义的变量就叫局部变量。

话不多说,代码如下:

def test1():
 a = 300 # 定义一个局部变量a,并初始化300
 print("--test1--修改前:a=%s" % a)
 a = 200 # 给变量a重新赋值200
 print("--test1--修改后:a=%s" % a)
def test2():
 a = 400 # 定义另一个局部变量a,并初始化400
 print("--test2--修改后:a=%s" % a)
# 分别调用函数test1,test2
test1()
test2()

输出:

--test1--修改前:a=300
--test1--修改后:a=200
--test2--修改后:a=400

结论:

  • 局部变量就是在函数内部定义的变量。
  • 不同的函数内部可以定义名字相同的变量,但它们不会产生影响。
  • 局部变量的作用,为了临时保存数据需要在需要在函数中定义变量来进行存储。

到此这篇关于Python中的全局变量如何理解的文章就介绍到这了,更多相关Python中全局变量详解内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
Jun 04 Python
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
May 16 Python
Python 'takes exactly 1 argument (2 given)' Python error
Dec 13 Python
Anaconda入门使用总结
Apr 05 Python
对Python 内建函数和保留字详解
Oct 15 Python
使用pandas实现csv/excel sheet互相转换的方法
Dec 10 Python
python读取几个G的csv文件方法
Jan 07 Python
使用python3 实现插入数据到mysql
Mar 02 Python
pandas DataFrame 数据选取,修改,切片的实现
Apr 24 Python
Pytorch环境搭建与基本语法
Jun 03 Python
Python加载数据的5种不同方式(收藏)
Nov 13 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
Feb 01 Python
使用OpenCV获取图片连通域数量,并用不同颜色标记函
Jun 04 #Python
Python urllib2运行过程原理解析
Jun 04 #Python
Python如何生成xml文件
Jun 04 #Python
基于python代码批量处理图片resize
Jun 04 #Python
Python脚本如何在bilibili中查找弹幕发送者
Jun 04 #Python
Python爬虫谷歌Chrome F12抓包过程原理解析
Jun 04 #Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
Jun 04 #Python
You might like
造就帕卡马拉的帕卡斯是怎么被发现的
2021/03/03 咖啡文化
php MYSQL 数据备份类
2009/06/19 PHP
PHPMailer邮件发送的实现代码
2013/05/04 PHP
YII框架批量插入数据的方法
2017/03/18 PHP
php5.x禁用eval的操作方法
2018/10/19 PHP
javascript 模式设计之工厂模式学习心得
2010/04/27 Javascript
jquery中使用ajax获取远程页面信息
2011/11/13 Javascript
js 距离某一时间点时间是多少实现代码
2013/10/14 Javascript
jquery获取一个元素下面相同子元素的个数代码
2014/07/31 Javascript
js获取页面引用的css样式表中的属性值方法(推荐)
2016/08/19 Javascript
微信公众号 摇一摇周边功能开发
2016/12/08 Javascript
Angular2自定义分页组件
2017/04/19 Javascript
js实现鼠标拖拽div左右滑动
2020/01/15 Javascript
Vue中fragment.js使用方法小结
2020/02/17 Javascript
写给新手同学的vuex快速上手指北小结
2020/04/14 Javascript
详解vue 中 scoped 样式作用域的规则
2020/09/14 Javascript
[01:00] DOTA2英雄背景故事第五期之重力引力法则谜团
2020/07/16 DOTA
Python语言技巧之三元运算符使用介绍
2013/03/04 Python
Python实例分享:快速查找出被挂马的文件
2014/06/08 Python
python连接MySQL数据库实例分析
2015/05/12 Python
对于Python中RawString的理解介绍
2016/07/07 Python
基于Python __dict__与dir()的区别详解
2017/10/30 Python
Python编程之gui程序实现简单文件浏览器代码
2017/12/08 Python
python实现音乐下载器
2018/04/15 Python
替换python字典中的key值方法
2018/07/06 Python
浅析Django中关于session的使用
2019/12/30 Python
CSS3实战第一波 让我们尽情的圆角吧
2010/08/27 HTML / CSS
大学生职业生涯规划书模版
2013/12/30 职场文书
工程质量承诺书
2014/03/27 职场文书
借款协议书范本
2014/04/22 职场文书
大学新学期计划书
2014/04/28 职场文书
美德少年主要事迹材料
2015/11/04 职场文书
建房合同协议书
2016/03/21 职场文书
入党申请书怎么写?
2019/06/11 职场文书
详解CSS玩转图片Base64编码
2021/05/25 HTML / CSS
手残删除python之后的补救方法
2021/06/26 Python