Python中是不支持静态变量的,但是我们可以通过函数的默认值来实现静态变量的功能。
当函数的默认值是内容是可变的类时,类的内容可变,而类的名字没变。(相当于开辟的内存区域没有变,而其中内容可以变化)。
这是因为python中函数的默认值只会被执行一次,(和静态变量一样,静态变量初始化也是被执行一次。)这就是她们的共同点。

看下面的程序片段:

def f(a, L=[]):    L.append(a)    return L

print f(1)print f(2)print f(3)print f(4,['x'])print f(5)

他的输出是:

[1][1, 2][1, 2, 3]['x', 4][1, 2, 3, 5]

前面的好理解,为什么最后 “print f(5)”的输出是 “[1, 2, 3, 5]”呢?

这是因为 “print f(4,['x'])”时,默认变量并没有被改变,因为默认变量的初始化只是被执行了一次(第一次使用默认值调用),初始化执行开辟的内存区(我们可以称之为默认变量)没有被改变,所以最后的输出结果是“[1, 2, 3, 5]”。

关于Python的静态变量相关推荐

  1. python局部静态变量_python如何设置静态变量

    众所周知,Python语言并不支持静态变量,比如下面这样一个应用场景: void foo() { static int count = 0; count ++; } 在Python中无法自然实现这个功 ...

  2. python中静态变量_Python中的静态变量和方法

    python中静态变量 Defining static variable and method is a common programming concept and is widely used i ...

  3. python静态变量命名_为什么Python没有静态变量?

    为什么Python没有静态变量? 有一个问题问如何在python中模拟静态变量. 另外,在网上可以找到许多创建静态变量的解决方案. (尽管我还没有看到我喜欢的一个.) 为什么Python不支持方法中的 ...

  4. python中静态变量和静态方法_【开发者笔记】python中的类方法(@classmethod)和静态方法(@staticmethod)...

    在java.c#等高级语言中我们用static来定义静态方法和静态变量,那么在python中如何定义静态方法和静态变量呢. python提供了@classmethod和@staticmethod来定义 ...

  5. python局部静态变量_全局变量、局部变量和静态变量

    全局变量和局部变量在写代码时需要区分清楚,不然会出大问题.不同语言定义不同范围的变量的写法有很大的区别. 那么静态变量是在什么场景下用到呢?我们来假设这样一个场景:在函数内部定义的变量,当程序执行到它 ...

  6. Python的学习(二十一)----Python的静态变量

    一直以来用python做测试,可能没有很深入的了解,前段时间在论坛里面有人提问说, class foo(): member1 member2 ... self.member1 foo.member2 ...

  7. python局部静态变量_python静态变量如何设置?这样的代码你会不会写

    [摘要]众所周知,Python语言并不支持静态变量,在python中也有着不可或缺的地位,那么python静态变量如何设置?这样的代码你会不会写,这些内容也许对python学习有帮助,毕竟实践出真知, ...

  8. python定义静态变量_Python 中类的静态变量怎么理解

    Python使用函数默认值实现函数静态变量,如果是静态方法,可以使用@staticmethod标注. 一.Python函数默认值 Python函数默认值的使用可以在函数调用时写代码提供方便,很多时候我 ...

  9. python静态变量定义_Python的学习(二十一)----Python的静态变量

    前段时间在论坛里面有人提问说, class foo(): member1 member2 ... self.member1 foo.member2 其中的两个成员member1, member2有什么 ...

最新文章

  1. 空心磁珠铁氧体抗干扰屏蔽磁环RH磁通高频磁芯圆形穿心磁珠滤波器
  2. 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质示例 )
  3. charset参数 sqluldr2_sqluldr2 学习心得
  4. java写hive自定义函数_hive自定义函数的实现和执行
  5. 1073. Pearls
  6. 使用 TensorFlow 构建机器学习项目中文版
  7. python+freetype+opencv 图片中文(汉字)显示 详细图文教程和项目完整源代码
  8. 如何把R加到环境变量 Linux,如何设置R的环境变量以在RedHat Linux(RHEL6)上的Tomcat中使用...
  9. Qt中调用C语言函数库
  10. 基于 Flink 构建全场景多维度实时计算数仓
  11. 北京航空航天大学计算机科学与技术考研科目,2022北京航空航天大学计算机科学与技术考研备考指导-参考书、分数线...
  12. 基于Modelica的起落架摆震建模
  13. Android studio Gradle:Executing tasks - 一直卡在Gradle:Build Running
  14. ROS新建工作空间及编译
  15. SketchUp: Modeling Interiors from Photos SketchUp:从照片建模室内设计 Lynda课程中文字幕
  16. 微型计算机地址总线是16位,某微型计算机的地址总线的位数是16位,最大的寻址空间可为()。A.32KBB.64KBC.128KBD.256KB...
  17. 数据库数据迁移失败,如何进行修复操作
  18. P4716 【模板】最小树形图(朱刘算法模板题)
  19. python itertools groupy踩坑
  20. 软件使用_第二篇 Latex基础知识

热门文章

  1. 快速了解K4B2G1646F-BYK0
  2. TensorFlow 、Caffe等9大人工智能框架对比介绍
  3. 就同一个Service类中,一个事务方法调用另外一个有事务的方法
  4. oracle的dmp导出,oracle数据库dmp文件的导出和导入方法
  5. 【FPGA知识点】八段共阳极数码管编码表
  6. CSharp学习笔记
  7. 第七章租赁法律与合同
  8. Linux gpg命令
  9. python输出随机字符串代码
  10. 如何强制修改电脑密码