python如何设置静态变量

 更新时间:2020年09月07日 08:00:09   作者:爱喝马黛茶的安东尼  
在本篇内容里小编给大家整理的是一篇关于python如何设置静态变量的相关文章,有兴趣的朋友们可以参考下。

众所周知,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 中的 abc 模块之抽象类与接口

    Python 中的 abc 模块之抽象类与接口

    在面向对象设计中,Python的abc模块提供了定义抽象类和接口的结构化方法,抽象类是不能直接实例化的类,主要用于定义接口规范,确保子类实现必要的方法,本文介绍了Python 中的 abc 模块之抽象类与接口,感兴趣的朋友跟随小编一起看看吧
    2024-11-11
  • 深入理解Playwright的高级功能和用法

    深入理解Playwright的高级功能和用法

    Playwright是一个强大而灵活的Python库,用于自动化浏览器操作和测试,本文主要介绍了深入理解Playwright的高级功能和用法,具有一定的 参考价值,感兴趣的可以了解一下
    2024-05-05
  • Python中对象迭代与反迭代的技巧总结

    Python中对象迭代与反迭代的技巧总结

    这篇文章将通过实例给大家分享Python中对象迭代与反迭代的技巧,对大家学习或者使用python具有一定的参考借鉴价值。有需要的下面来一起看看吧。
    2016-09-09
  • Flask框架运用Ajax实现数据交互的示例代码

    Flask框架运用Ajax实现数据交互的示例代码

    使用Ajax技术网页应用能够快速地将增量更新呈现在用户界面上,而不需要重载刷新整个页面,这使得程序能够更快地回应用户的操作,本文将简单介绍使用AJAX如何实现前后端数据通信
    2022-11-11
  • python Dtale库交互式数据探索分析和可视化界面

    python Dtale库交互式数据探索分析和可视化界面

    这篇文章主要为大家介绍了python Dtale库交互式数据探索分析和可视化界面实现功能详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Python常用模块用法分析

    Python常用模块用法分析

    这篇文章主要介绍了Python常用模块用法分析,主要包括内置函数、文件操作、正则匹配等等,需要的朋友可以参考下
    2014-09-09
  • k-means 聚类算法与Python实现代码

    k-means 聚类算法与Python实现代码

    这篇文章主要介绍了k-means 聚类算法与Python实现代码,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • Python中 whl包、tar.gz包的区别详解

    Python中 whl包、tar.gz包的区别详解

    whl格式本质上是一个压缩包,里面包含了py文件,以及经过编译的pyd文件,这篇文章主要介绍了Python中 whl包、tar.gz包的区别,需要的朋友可以参考下
    2022-08-08
  • 关于使用Python的time库制作进度条程序

    关于使用Python的time库制作进度条程序

    这篇文章主要介绍了关于使用Python的time库制作进度条程序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • 详尽讲述用Python的Django框架测试驱动开发的教程

    详尽讲述用Python的Django框架测试驱动开发的教程

    这篇文章主要介绍了详尽讲述用Python的Django框架测试驱动开发的教程,主要使用TDD工具,全文介绍非常详细,需要的朋友可以参考下
    2015-04-04

最新评论