python 全局变量_python程序中用类变量代替global 定义全局变量
在python编程中,一般使用global 关键字来定义全局变量,但是发现 global 关键字在涉及多个文件时,好像存在问题。
比如,单个文件下用global定义使用全局变量的情况 ,看下面的代码
# -*-coding: utf-8 -*-#from data_def import *distance=34
class test(object): def __init__(self): pass #在类里面改变全局变量的值 def change_1(self): global distance distance=90 print("distance in class:", distance)
#输出全局变量的值 def print_value(self): global distance print("distance in class:", distance)
#在函数里面使用和打印全局变量的值def function_test(): global distance print("global value in function", distance) distance=234 print("global value in function",distance)
function_test() #在函数里面使用和改变全局变量的值 34->234t=test()t.print_value() #在类里面打印全局变量的值 234t.change_1() #在类里面改变全局变量的值 234->90
程序运行结果如下:全局变量运行正确
global value in function 34global value in function 234distance in class: 234distance in class: 90
下面把上述代码拆分成两个文件,data_def.py
和main.py
,data_def.py
定义全局变量distance
和类 ,main.py
导入data_def.py
。
data_def.py
文件代码如下:
#Python学习交流QQ群:778463939distance=34class test(object): def __init__(self): pass #在类里面改变全局变量的值 def change_1(self): global distance distance=90 print("distance in class:", distance)
#输出全局变量的值 def print_value(self): global distance print("distance in class:", distance)
main.py文件代码如下:
# -*-coding: utf-8 -*-from data_def import *#在函数里面使用和打印全局变量的值def function_test(): global distance print("global value in function", distance) distance=234 print("global value in function",distance)
print("gloabl value in main:",distance) #主函数里面,全局变量为34function_test() #在函数里面使用和改变全局变量的值 34->234t=test()t.print_value() #在类里面打印全局变量的值 输出为 34 并非是234,函数里面改变全局变量值不影响类里面全局变量的值???t.change_1() #在类里面改变全局变量的值 34->90
程序运行结果:
gloabl value in main: 34global value in function 34global value in function 234distance in class: 34distance in class: 90
两次运行的结果存在出入,可以发现,用global 在不同文件间操作全局变量时,生成的结果和我们想象的不太一样,具体原因还不明确??知道原因的欢迎留言。
为此,可以考虑用类变量来定义全局变量。实现方式看以下代码。
第一个文件(data_def.py
)定义两个类,第一个类定义全局变量distance ,第二个类为普通操作类
# -*-coding: utf-8 -*-# Python学习交流QQ群:778463939
class global_value(): distance=34
class test(object): def __init__(self): pass #在类里面改变全局变量的值 def change_1(self): global_value.distance=40 print("distance in class:", global_value.distance)
def change_2(self): global_value.tail_dis=90 print("distance in class:",global_value.distance)
#输出全局变量的值 def print_value(self): print("distance in class:", global_value.distance)
第二个文件(main.py) 导入第一个文件定义的类,并进行变量操作
# -*-coding: utf-8 -*-from data_def import *
#在函数里面使用和打印全局变量的值def function_test(): print("global value in function", global_value.distance) global_value.distance=234 print("global value in function",global_value.distance)
print("global value in main:",global_value.distance) #打印出全局变量的初始值:34t=test()t.change_1() #在类里面改变全局变量的值:34->40print("global value in main:",global_value.distance)t.change_2() #在类里面改变全局变量的值:40->90print("global value in main:",global_value.distance)function_test() #在自定义函数里面使用和改变全局变量的值 90->234global_value.distance=11 #在main主函数里面改变全局变量的值 234->11t.print_value() #在类里面查看已经改变的全局变量的值 11
程序执行输出结果:
global value in main: 34distance in class: 40global value in main: 40distance in class: 40global value in main: 40global value in function 40global value in function 234distance in class: 11
从输出结果可以看出,利用类变量的方式也可以实现全局变量的定义,并且可以跨文件操作。
python 全局变量_python程序中用类变量代替global 定义全局变量相关推荐
- python在类中定义全局变量_python程序中用类变量代替global 定义全局变量
在python编程中,一般使用global 关键字来定义全局变量,但是发现 global 关键字在涉及多个文件时,好像存在问题. 比如,单个文件下用global定义使用全局变量的情况 ,看下面的代码 ...
- js定义全局变量 vue页面_vue.js中如何定义全局变量?
vue.js中如何定义全局变量?下面本篇文章给大家介绍一下在 Vuejs 项目中如何定义全局变量.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 在 Vuejs 项目中如何定义全局变 ...
- c语言头文件可以定义全局变量,C语言在头文件中定义全局变量
C语言在头文件中定义全局变量 头文件定义全局变量等问题 全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么? 可以,在不同的C文件中以static形式来声明同名全局变量.头文件中不可以直接定 ...
- python求和_Python程序查找特殊求和系列的解决方案
python求和 We are going to design a special sum series function which has following characteristics: 我 ...
- python输入程序_python程序的输入输出(acm的几个小程序)
#!/usr/bin/env python#coding=utf-8 a=[]for x inraw_input().split(): a.append(int(x))print sum(a) 下面的 ...
- 程序设计基础python答案_Python程序设计基础免费答案
(河海大学2007年考研试题)设其一平面流动的流函数为ψ=3x2y-y3,则其流速ux=________,uy=_________ 在渠道管理范围内需改建.扩建.拆除或者损坏原有工程设施的,由后建工程 ...
- python缩进在程序中长度统一且强制使用_Python习题纠错1
February, 1991 0.9.1 2.Python语言的缩进只要统一即可,不一定是4个空格(尽管这是惯例). Python缩进在程序中长度统一且强制使用. 3.IPO:Input Proces ...
- type是python保留字_Python保留字总结
关键字 保留字也称为关键字,指被编程语言内部定义并保留使用的标识符,程序员编写程序时不能定义与保留字相同的标识符.每种程序设计语言都有一套保留字,保留字一般用来构成程序整体框架.表达关键值和具有结构性 ...
- php全局变量的关键字,php的static关键字和全局变量
1.全局变量[其不属于面向对象的思想,因为其放在对象之外的],面向对象有一个特点,其实封装的,php希望其所有的成员都应该放在类中:php的面向对象是基于面向对象的,不是纯粹面向对象的:也就是其可以面 ...
最新文章
- 如何在 Linux 上用 Markdown 编写电影剧本
- Meta首个元宇宙平台Horizon被吐槽,用户只配有半截身子!
- Science Robotics近日刊登CMU重大突破,无需手术,普通人就能用意念操控机械臂!...
- java.nio.ByteBuffer中flip、rewind、clear方法的区别
- 一、NLTK工具包使用
- 利用js种的正则删除html标签
- VB 文件常用操作相关API
- 第41天:匀速、缓动运动和图片无缝滚动
- idc机房安装服务器系统,IDC机房如何部署IP KVM
- 轻量级 Visio,绘制程序框图,你值得拥有
- react devtools插件报错处理
- python mysql library,python调用mysql报错解决方案
- sails mysql_sails-mysql架构数据类型
- WPF DataGrid 值转换 conver使用
- 疯狂的上网本意义何在?
- 微信新升级?这2个功能是你们期盼的吗?
- Openstack-nova(placement)组件部署流程
- 计算机图形剪裁程序说明,计算机图形学实验报告实验2裁剪算法实验
- 3、防御迷阵(二分+bfs)
- day4 高阶函数 嵌套函数 装饰器 内置函数 列表生成式 迭代器 生成器
热门文章
- 基于JAVA+SpringMVC+Mybatis+MYSQL的健身管理系统
- 存储过程/函数权限的问题解决(The user specified as a definer ('root'@'%') does not exist)...
- 吃糖果hdu2502
- python爬虫加强版!!!!想爬哪个队伍就爬那个
- 2021计算机一级模拟29套,“智慧家”2021年第二十九期每周家庭套餐
- pareto解是什么意思_Pareto是什么意思
- python grpc 并发_python中grpc的使用示例
- Node.js下载安装及各种npm、nvm、nrm配置(保姆式教程---提供全套安装包)---node.js的安装与配置(1)
- Python使用socket读取网页源代码实现简单爬虫程序
- 会议通知|2019暑期全国高校Python数据分析与实训课程高级研修班