定义:

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的局部变量,全局变量,类变量,实例变量相关推荐

  1. pythonclass全局变量_python怎么使用全局变量

    在编写程序的时候,如果想为一个在函数外的变量重新赋值,并且这个变量会作用于许多函数中时,就需要告诉python这个变量的作用域是全局变量.此时用global语句就可以变成这个任务,也就是说没有用glo ...

  2. python局部变量屏蔽全局变量_python – 将局部变量设置为函数而不是使用全局变量来优化函数...

    Is there a practical noticeable speed-up (that could balance the inconvenience of the larger functio ...

  3. python怎样设置全局变量_Python教程之全局变量用法

    本文实例讲述了Python全局变量用法.分享给大家供大家参考,具体如下: 全局变量不符合参数传递的精神,所以,平时我很少使用,除非定义常量.今天有同事问一个关于全局变量的问题,才发现其中原来还有门道. ...

  4. python 使用全局变量_Python教程之全局变量用法

    Python教程之全局变量用法 本文实例讲述了Python全局变量用法.分享给大家供大家参考,具体如下: 全局变量不符合参数传递的精神,所以,平时我很少使用,除非定义常量.今天有同事问一个关于全局变量 ...

  5. python跨文件全局变量_Python跨文件全局变量的实现方法示例

    前言 在C语言中,由于变量一定是先声明,后使用,所以我们可以清楚的知道,现在使用的变量是全局还是局部,比如: int a = 5; void test(void) { a = 1; // 没有先声明, ...

  6. python中全局变量_python如何使用全局变量

    python全局变量的使用:1.引用全局变量,代码为[if i in b:print("%d in list b" %i)]:2.修改全局变量,代码为[print "be ...

  7. python多线程共享全局变量_Python多线程-共享全局变量

    多线程-共享全局变量 import threading import time g_num = 200 def test1(): global g_num for i in range(5): g_n ...

  8. python跨文件全局变量_Python跨文件全局变量的使用

    尽管某些书籍上总是说避免使用全局变量,但是在实际的需求不断变化中,往往定义一个全局变量是最可靠的方法,但是又必须要避免变量名覆盖. Python 中 global 关键字可以定义一个变量为全局变量,但 ...

  9. python声明全局变量_python怎样声明全局变量

    python中定义全局变量可以使用global关键字 global介绍 在编写程序的时候,如果想为一个在函数外的变量重新赋值,并且这个变量会作用于许多函数中时,就需要告诉python这个变量的作用域是 ...

最新文章

  1. RobotFrameWork(五)控制流之if语句——Run Keyword If
  2. LED驱动设计及实现
  3. JavaScript 中的原型(总则)
  4. 匿名函数:lambda函数简述
  5. Java集合(实现类线程安全性)
  6. C++(7)--for循环,break,continue语句
  7. 契约测试:解决微服务测试的问题
  8. 一眼中毒!雷军晒小米9官方高清真机图:全息幻彩惊艳无比
  9. OpenStack网络介绍
  10. 小程序的网络请求封装
  11. Excel下的数据挖掘:学生成绩统计分析实战之总体分析
  12. 如何加声调口诀_拼音顺口溜儿歌和口诀 学拼音的重点难点详解
  13. win7上搭建ftp站点
  14. 从零开始学统计 03 | 均值,方差,标准差
  15. 移动Web开发基础-Viewport
  16. Es refresh index
  17. 如何用excel做正交分析_如何在SPSS中进行正交设计及正交分析?
  18. 正则 [.\n]* (.|\n)* 区别
  19. C语言:裴波那契数列(数组)
  20. MySQL多表查询练习题

热门文章

  1. 修改表格字体颜色_word排版应用:如何创建文本样式和表格样式
  2. IntelliJ IDEA for Mac 封装字段(添加setter/getter方法)
  3. Java中如何获取字符串的Unicode编码
  4. IntelliJ IDEA 项目开发中各个目录的关系
  5. 关于 vim 的 magic 设置
  6. java通用编码规范考试_《java编码规范考试题答案》.doc
  7. 温度补偿计算公式_一种工业用温度测量模块的设计与实现
  8. 【lua学习】5.栈和lua_State
  9. python读取写入文件_Python文件读写保存操作
  10. ubuntu系统安装socket服务器,Ubuntu上进行socket编程,并且实现通信功能