pythonclass全局变量_python的局部变量,全局变量,类变量,实例变量
定义:
a、全局变量:在模块内、在所有函数外面、在class外面,这就是全局变量。
b、局部变量:在函数内、在class的方法内(未加self修饰的),这就是局部变量。
c、 静态变量:在class内的,但不在class的方法内的,这就是静态变量。
d、 实例变量:在class的方法内的,用self修饰的变量,这就是实例变量。
1.全局变量与局部变量:
全局变量是在整个py文件中声明,全局范围内都可以访问。
局部变量是在某个函数中声明的,只能在该函数中调用它,如果试图在超出范围的地方调用,程序就爆掉了。
如果在函数内部定义与某个全局变量一样名称的局部变量,就可能会导致意外的效果,可能不是你期望的。因此不建议这样使用,这样会使得程序很不健全。
demo1:
deffun(x):
y=2
print("乘法的运行结果:",x*y)
num1=1
print("初始num1=",num1)
fun(num1)print("y的值是:",y)
报错的原因是因为试图访问局部变量,但是访问的地方不在该变量y的作用域中
demo2:
deffun():
num1=2
print("函数内修改后num1=",num1)
num1=1
print("初始num1=",num1)
fun()print("运行完函数后num1=",num1)
运行结果:
可以看到在函数内部对全局变量的修改后,在函数执行完毕,修改的结果是无效的,全局变量并不会受到影响再看:
demo3:
deffun():
num1*=2
print("函数内修改后num1=",num1)
num1=1
print("初始num1=",num1)
fun()print("运行完函数后num1=",num1)
运行结果:
报错了。这是因为在fun()函数使用了局部变量num1,它只是个跟全局变量同名的局部变量,使用前还是要赋值,因此再次强调不要这样使用global关键字
如果真的想要在函数体内修改全局变量的值,就要使用global关键字
Demo4:
deffun():globalnum1
num1=2
print("函数内修改后num1=",num1)
num1=1
print("初始num1=",num1)
fun()print("运行完函数后num1=",num1)
运行结果:
使用global关键字就是告诉python编译器这个变量不是局部变量而是全局变量,其实有点像是"引用"的意思
nonlocal关键字
再看看另一个跟变量相关的关键字nonlocal,字面意思就是指当前的这个变量不是局部变量。nonlocal是Python3.0中新增的关键字,python2.x不支持
先来看看下面这段代码
deffun():
num2=3
deffun2():
num2*=2
print("num2=",num2)returnfun2()
fun()
运行结果:
错误的原因跟前面的差不多,就是使用了未定义的局部变量,然而num2也不是全局变量,只是fun2函数的外层变量,强行使用global定义num2的话同样会报错(不信你试试)
这时候需要使用nonlocal关键字:
deffun():
num2=3
deffun2():
nonlocal num2
num2*=2
print("num2=",num2)returnfun2()
fun()
运行结果:
2.类变量与实例变量:
https://blog.csdn.net/qq_37315403/article/details/81539340
a = 1 # 这个是全局变量 全局这个.py 任意一个函数或者方法都可以使用
def test1():
a = 2 # 这个是局部变量 在这个函数可以使用
class clazz1():
a = 3 # 这个静态变量 在当前类可以使用
def test2(self):
a = 4 # 这个是局部变量 在这个方法可以使用
self.b = 5 # 这个是实例变量 属性b 在当前类共享
pythonclass全局变量_python的局部变量,全局变量,类变量,实例变量相关推荐
- pythonclass全局变量_python怎么使用全局变量
在编写程序的时候,如果想为一个在函数外的变量重新赋值,并且这个变量会作用于许多函数中时,就需要告诉python这个变量的作用域是全局变量.此时用global语句就可以变成这个任务,也就是说没有用glo ...
- python局部变量屏蔽全局变量_python – 将局部变量设置为函数而不是使用全局变量来优化函数...
Is there a practical noticeable speed-up (that could balance the inconvenience of the larger functio ...
- python怎样设置全局变量_Python教程之全局变量用法
本文实例讲述了Python全局变量用法.分享给大家供大家参考,具体如下: 全局变量不符合参数传递的精神,所以,平时我很少使用,除非定义常量.今天有同事问一个关于全局变量的问题,才发现其中原来还有门道. ...
- python 使用全局变量_Python教程之全局变量用法
Python教程之全局变量用法 本文实例讲述了Python全局变量用法.分享给大家供大家参考,具体如下: 全局变量不符合参数传递的精神,所以,平时我很少使用,除非定义常量.今天有同事问一个关于全局变量 ...
- python跨文件全局变量_Python跨文件全局变量的实现方法示例
前言 在C语言中,由于变量一定是先声明,后使用,所以我们可以清楚的知道,现在使用的变量是全局还是局部,比如: int a = 5; void test(void) { a = 1; // 没有先声明, ...
- python中全局变量_python如何使用全局变量
python全局变量的使用:1.引用全局变量,代码为[if i in b:print("%d in list b" %i)]:2.修改全局变量,代码为[print "be ...
- python多线程共享全局变量_Python多线程-共享全局变量
多线程-共享全局变量 import threading import time g_num = 200 def test1(): global g_num for i in range(5): g_n ...
- python跨文件全局变量_Python跨文件全局变量的使用
尽管某些书籍上总是说避免使用全局变量,但是在实际的需求不断变化中,往往定义一个全局变量是最可靠的方法,但是又必须要避免变量名覆盖. Python 中 global 关键字可以定义一个变量为全局变量,但 ...
- python声明全局变量_python怎样声明全局变量
python中定义全局变量可以使用global关键字 global介绍 在编写程序的时候,如果想为一个在函数外的变量重新赋值,并且这个变量会作用于许多函数中时,就需要告诉python这个变量的作用域是 ...
最新文章
- RobotFrameWork(五)控制流之if语句——Run Keyword If
- LED驱动设计及实现
- JavaScript 中的原型(总则)
- 匿名函数:lambda函数简述
- Java集合(实现类线程安全性)
- C++(7)--for循环,break,continue语句
- 契约测试:解决微服务测试的问题
- 一眼中毒!雷军晒小米9官方高清真机图:全息幻彩惊艳无比
- OpenStack网络介绍
- 小程序的网络请求封装
- Excel下的数据挖掘:学生成绩统计分析实战之总体分析
- 如何加声调口诀_拼音顺口溜儿歌和口诀 学拼音的重点难点详解
- win7上搭建ftp站点
- 从零开始学统计 03 | 均值,方差,标准差
- 移动Web开发基础-Viewport
- Es refresh index
- 如何用excel做正交分析_如何在SPSS中进行正交设计及正交分析?
- 正则 [.\n]* (.|\n)* 区别
- C语言:裴波那契数列(数组)
- MySQL多表查询练习题
热门文章
- 修改表格字体颜色_word排版应用:如何创建文本样式和表格样式
- IntelliJ IDEA for Mac 封装字段(添加setter/getter方法)
- Java中如何获取字符串的Unicode编码
- IntelliJ IDEA 项目开发中各个目录的关系
- 关于 vim 的 magic 设置
- java通用编码规范考试_《java编码规范考试题答案》.doc
- 温度补偿计算公式_一种工业用温度测量模块的设计与实现
- 【lua学习】5.栈和lua_State
- python读取写入文件_Python文件读写保存操作
- ubuntu系统安装socket服务器,Ubuntu上进行socket编程,并且实现通信功能