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设置静态变量内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python类和函数中使用静态变量的方法

    本文实例讲述了python类和函数中使用静态变量的方法.分享给大家供大家参考.具体分析如下: 在python的类和函数(包括λ方法)中使用静态变量似乎是件不可能[Nothing is impossible]的事, 但总有解决的办法,下面通过实现一个类或函数的累加器来介绍一些较为非主流的方法 方法一.通过类的__init__和__call__方法 class foo: def __init__(self, n=0): self.n = n def __call__(self, i): self.n

  • Python使用函数默认值实现函数静态变量的方法

    本文实例展示了Python使用函数默认值实现函数静态变量的方法,具体方法如下: 一.Python函数默认值 Python函数默认值的使用可以在函数调用时写代码提供方便,很多时候我们只要使用默认值就可以了. 所以函数默认值在python中用到的很多,尤其是在类中间,类的初始化函数中一帮都会用到默认值. 使用类时能够方便的创建类,而不需要传递一堆参数. 只要在函数参数名后面加上 "=defalut_value",函数默认值就定义好了.有一个地方需要注意的是,有默认值的参数必须在函数参数列表

  • python实现类的静态变量用法实例

    本文实例讲述了python类的静态变量用法.分享给大家供大家参考.具体分析如下: 这里使用静态变量目的是在类中实现一个静态的队列,这里用数组实现,任何时候插入到队列中的数据不会和类的实例有直接关系. __author__ = 'Administrator' class CaptchaImage: def queue(self,arr=list()): return arr def InsertCode(self,code): self.queue().append(code) if __name

  • python如何设置静态变量

    众所周知,Python语言并不支持静态变量,比如下面这样一个应用场景: void foo() {     static int count = 0;     count ++; } 在Python中无法自然实现这个功能.换个角度来看这个问题,函数中的静态变量其实可以看做是函数的一个内部变量,而不是调用期间生成的局部变量.所以这里介绍一种使用装饰器的方法给函数添加这样的内部变量. def static_vars(**kwargs):     def decorate(func):         

  • python设置环境变量的作用和实例

    Python的环境变量 环境变量 说明 PYTHONSTARTUP 在交互式启动时执行的文件(无默认值) PYTHONPATH ':' - 以默认模块搜索路径为前缀的分隔目录列表.结果是sys.path. PYTHONHOME 交替的 <prefix> 目录 (或者 <prefix>:<exec_prefix>). 默认的模块搜索路径为 <prefix>/pythonX.X. PYTHONCASEOK 忽略import语句中的大小写(Windows). PY

  • python“静态”变量、实例变量与本地变量的声明示例

    前言 虽然各种编程语言之间大部分语法存在共通的地方,但是在一些细节的处理上还是千差万别 才接触Python不久(之前是学Java的),实在想吐槽一下语言之间编码格式上的不统一问题,比如Java用分号分隔代码块,Python用空格,这无形之中增加了编码人员的学习成本 作为初学人员,还是老老实实记录一下学习过程中的坑:) 1. "静态"变量的声明 这里的静态变量是借用Java中静态变量的概念(不知道Python中的具体概念是什么),指既可以通过类名直接进行访问,也可以通过类的实例进行访问的

  • python设置环境变量的原因和方法

    相信很多初学python的小伙伴都会遇到这样的坑:环境变量配置不好,无法正常启动python.那么环境变量究竟是个什么东西呢?为什么要设置它?下面我们来说一说. 1.什么是环境变量 引用百度百科里面的解释:环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息.看到这里我相信大家可能还是有所疑惑,但是,不急,接着看. 2.为什么需要环境变量 windows系统下,假如我们安装了某一款软件,安装结束后,在安装目录会生成一个该软件的.exe文件,双击该文件,我们就

  • python设置环境变量的作用整理

    python设置环境变量有什么用? 1.设置环境变量可以在cmd命令行中找到python命令: 2.设置环境变量可以在安装exe的第三包的时候找到对应python版本路径: 3.设置环境变量可以在用pip install 包的时候找到路径. 简言之.python设置环境变量可以使命令行里面直接运行脚本.很多ide也需要你预设python环境变量,不然找不到你的python parser. 知识点扩展: Python的环境变量 环境变量 说明 PYTHONSTARTUP 在交互式启动时执行的文件(

  • python为什么会环境变量设置不成功

    学习python编程,首先要配置好环境变量.本文主要讲解python的环境变量配置,在不同版本下如何安装 Windows 打开Python官方下载网站 https://www.python.org/downloads/release/python-370/ x86:表示是32位电脑 x86-64:表示是64位电脑 目前Python版本分为2.x版本和3.x版本.推荐大家使用3.x版本. 设置环境变量,我的电脑->属性->高级系统设置->环境变量,如下 配置 在"变量值"

  • 浅谈virtual、abstract方法和静态方法、静态变量理解

    说点对这几个容易混淆的词的理解: 1.c++中的virtual方法的 virtual关键字主要是防止继承中重复继承父类的同一个方法而设置的标识. 2.virtual与abstract关键字的不同之处在于 virtual方法可以有具体的实现,当子类继承父类的时候若没有覆写该方法,也可以使用父类中的此方法. 但是abstract方法即抽象方法是没有具体实现的,子类需要自己实现.打个比方就是virtual 虚方法 这个 父亲虽然"虚"了点但'家产'还是有一点的,但老爸是抽象方法这个儿子就悲剧

随机推荐