众所周知,Python语言并不支持静态变量,比如下面这样一个应用场景:

void foo() {

static int count = 0;

count ++;

}

在Python中无法自然实现这个功能。换个角度来看这个问题,函数中的静态变量其实可以看做是函数的一个内部变量,而不是调用期间生成的局部变量。所以这里介绍一种使用装饰器的方法给函数添加这样的内部变量。

def static_vars(**kwargs):

def decorate(func):

for k in kwargs:

setattr(func, k, kwargs[k])

return func

return decorate

这是一个Python装饰器,通过@语法调用,在一个函数外层再包裹一层,这里相当于给函数添加内部变量。可以这样来使用这个装饰器,比如我们想实现上面的想法,在foo函数中添加一个计数器,有

@static_vars(counter = 0)

def foo():

foo.counter += 1

其实如果一定要通过内部变量来实现静态的效果,可以直接定义类来达到,但是装饰器将很多细节略去,而且通过**kwargs可以添加任意类型,任意数目,实现起来相对简单。

实例扩展:

这里使用静态变量目的是在类中实现一个静态的队列,这里用数组实现,任何时候插入到队列中的数据不会和类的实例有直接关系

__author__ = 'Administrator'

class CaptchaImage:

def queue(self,arr=list()):

return arr

def InsertCode(self,code):

self.queue().append(code)

if __name__=='__main__':

c = CaptchaImage()

c.InsertCode(1)

b=CaptchaImage()

b.InsertCode(2)

print(b.queue())

print(c.queue())

代码执行输出结果为:

[1, 2]

[1, 2]

到此这篇关于python如何设置静态变量的文章就介绍到这了,更多相关python设置静态变量内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

python静态变量_python如何设置静态变量相关推荐

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

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

  2. Python os.environ 读取和设置环境变量

    Python os.environ 读取和设置环境变量 引入 >>> import os 查看全部key >>> os.environ.keys() ['LC_NU ...

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

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

  4. python 类静态属性_python面向对象之静态属性/静态方法/类方法/组合

    继续学习,不要松懈 #!/usr/bin/env python # coding:utf-8 class Campus: def __init__(self,name,addr,type): self ...

  5. python数据类型变量_python的数据类型与变量

    计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形. 音频.视频.网页等各种各样的数据,不同的数据,需要定义不同的 ...

  6. python 添加环境变量_python永久添加环境变量

    import sys sys.path 系统环境是一个list,可以将自己需要的库添加进入,例如mysql库,hive库等等.有三种方式添加,均验证通过: 1 临时添加,在一个shell窗口中 imp ...

  7. python如何访问私有变量_Python基础_私有变量访问限制

    Python内置了一些特殊变量,以前后上下划线标注,同时我们自己要想定义一些变量,不想让外部访问,又该怎么做呢?更多内容请参考:Python学习指南 访问限制 在class内部,可以有属性和方法,而外 ...

  8. python设置环境变量语句_export设置环境变量

    Bash的环境变量分两种,临时的,或永久的.其实,这两者的设置方法是一样的,都是使用export命令,export是Bash的一个builtins. 设置临时的环境变量: export PYTHONP ...

  9. [转载] python定义整型常量_Python笔记——数据类型、变量和常量

    参考链接: Python变量,常量和文字 数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频 ...

最新文章

  1. 在bootstrap ace样式框架上修改的后台管理型模板(Tab页后台管理模板)
  2. 创建新的ros工作空间
  3. spring-ioc-xml
  4. 网络基础之 Nping 命令
  5. 阿里云Linux的mysql安装,使用yum安装
  6. CMMI之需求管理和股票池管理
  7. boost::proto::flatten相关的测试程序
  8. JSP实例-彩色验证码
  9. select - I/O多路复用
  10. opencv注释中的@brief、@code/@endcode、@param、@sa 以及 如何在pycharm中看到opencv函数的完整注释
  11. STM32-关于Proteus 仿真无法运行STM32CubeMX自动生成的代码
  12. 数据库查询-模糊查询
  13. 侯捷 C++11/14 笔记
  14. ORA-00904: invalid identifier
  15. centos 7.3 iscsi登录失败问题及解决方法
  16. PCA(主成分分析)获取BoundingBox代码分析
  17. 【机器学习】一些常用的回归模型实战(9种回归模型)
  18. android studio最新版下载,Android Studio mac版-Android Studio for mac下载 V4.2.1-PC6苹果网
  19. java 银行叫号系统
  20. 主流服务器的品牌和配置

热门文章

  1. ENJ2005-B半导体分立器件测试系统在中电某研究所正式上线运行
  2. VR局域网对战【捕鱼猎手】实战视频教程(上)-杨显峰-专题视频课程
  3. 30分钟利用Typecho搭建一个自己的博客网站
  4. 类型信息(7):动态代理
  5. 限购的情况下签署的房屋买卖合同,是否有效?
  6. 【机器学习】P17 梯度下降 与 梯度下降优化算法(BGD 等 与 Adam Optimizer、AdaGrad、RMSProp)
  7. html透明度_Unity透明效果-透明度测试
  8. 前端的框架iframe
  9. MTK去掉系统提取odex、selinux改为permissive、adb root
  10. mybaits中的一级缓存和二级缓存使用