python如何设置静态变量


Posted in Python onSeptember 07, 2020

众所周知,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使用django获取用户IP地址的方法
May 11 Python
Python数据可视化正态分布简单分析及实现代码
Dec 04 Python
Python中elasticsearch插入和更新数据的实现方法
Apr 01 Python
Php多进程实现代码
May 07 Python
详解Appium+Python之生成html测试报告
Jan 04 Python
python判断自身是否正在运行的方法
Aug 08 Python
Python实现手机号自动判断男女性别(实例解析)
Dec 22 Python
Python面向对象程序设计之继承、多态原理与用法详解
Mar 23 Python
你应该知道的Python3.6、3.7、3.8新特性小结
May 12 Python
详解python中的lambda与sorted函数
Sep 04 Python
Python深度学习之实现卷积神经网络
Jun 05 Python
Python中OpenCV实现简单车牌字符切割
Jun 11 Python
获取CSDN文章内容并转换为markdown文本的python
Sep 06 #Python
浅谈Python描述数据结构之KMP篇
Sep 06 #Python
详解Python3 定义一个跨越多行的字符串的多种方法
Sep 06 #Python
Python中实现一行拆多行和多行并一行的示例代码
Sep 06 #Python
Pytest单元测试框架如何实现参数化
Sep 05 #Python
Python实例方法、类方法、静态方法区别详解
Sep 05 #Python
Python装饰器如何实现修复过程解析
Sep 05 #Python
You might like
smarty模板嵌套之include与fetch性能测试
2010/12/05 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
2014/10/15 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
PHP多维数组排序array详解
2017/11/21 PHP
PHP赋值的内部是如何跑的详解
2019/01/13 PHP
javascript 贪吃蛇实现代码
2008/11/22 Javascript
js实现网页标题栏闪烁提示效果实例分析
2014/11/20 Javascript
jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
2015/08/24 Javascript
vue.js指令v-model实现方法
2016/12/05 Javascript
详解vue之页面缓存问题(基于2.0)
2017/01/10 Javascript
使用bootstrap插件实现模态框效果
2017/05/10 Javascript
js实现时分秒倒计时
2019/12/03 Javascript
微信小程序如何加载数据库真实数据的实现
2020/03/04 Javascript
12 种使用Vue 的最佳做法
2020/03/30 Javascript
原生js生成图片验证码
2020/10/11 Javascript
Python Sqlite3以字典形式返回查询结果的实现方法
2016/10/03 Python
python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
2018/02/26 Python
Anaconda下安装mysql-python的包实例
2018/06/11 Python
django如何连接已存在数据的数据库
2018/08/14 Python
Python3基本输入与输出操作实例分析
2020/02/14 Python
Python如何用wx模块创建文本编辑器
2020/06/07 Python
解决keras backend 越跑越慢问题
2020/06/18 Python
学python需要去培训机构吗
2020/07/01 Python
马来西亚在线时尚女装商店:KEI MAG
2017/09/28 全球购物
英国最大的网上药品商店:Chemist Direct
2017/12/16 全球购物
美国礼品卡交易网站:Cardpool
2018/08/27 全球购物
阿迪达斯印尼官方网站:adidas印尼
2020/02/10 全球购物
数据库专业英语
2012/11/30 面试题
教师个人自我鉴定
2014/02/08 职场文书
汽车销售经理岗位职责
2014/06/09 职场文书
2014年最新党员对照检查材料汇总
2014/09/15 职场文书
2015入党自荐书范文
2015/03/05 职场文书
计算机实训心得体会
2016/01/14 职场文书
用javascript制作qq注册动态页面
2021/04/14 Javascript
详解php中流行的rpc框架
2021/05/29 PHP
MySQL事务的ACID特性以及并发问题方案
2022/07/15 MySQL