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

   本文实例讲述了python类和函数中使用静态变量的方法。分享给大家供大家参考。具体分析如下:

  在python的类和函数(包括λ方法)中使用静态变量似乎是件不可能[Nothing is impossible]的事,

  但总有解决的办法,下面通过实现一个类或函数的累加器来介绍一些较为非主流的方法

  方法一、通过类的__init__和__call__方法

  ?

1
2
3
4
5
6
7
8
9
10
11

class foo:
def __init__(self, n=0):
self.n = n
def __call__(self, i):
self.n += i
return self.n
a=foo()
print a(1)
print a(2)
print a(3)
print a(4)

  方法二、在函数中定义一个类

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13

def foo2 (n=0):
class acc:
def __init__ (self, s):
self.s = s
def inc (self, i):
self.s += i
return self.s
return acc (n).inc
a=foo2()
print a(1)
print a(2)
print a(3)
print a(4)

  方法三、使用堆上的匿名参数

  ?

1
2
3
4
5
6
7
8
9
10

def foo3 (i, L=[]):
if len(L)==0:
L.append(0)
L[0]+=i
return L[0]
 
print foo3(1)
print foo3(2)
print foo3(3)
print foo3(4)

  在python官方的2.6环境下运行,

  上述三段代码得到的结果都是

  ?

1
2
3
4

1
3
6
10

  希望本文所述对大家的Python程序设计有所帮助。

时间: 2024-09-23 06:49:16

python类和函数中使用静态变量的方法的相关文章

PHP引用操作以及外部操作函数的局部静态变量的方法

通过引用方式在外部操作函数或成员方法内部的静态变量 下面举个简单的例子,说明三个关于引用方面的问题: 1. 参数引用后函数内进行类型转换同样是地址操作 2. 参数引用后再传递给其他函数时需要再次添加引用符才能保持地址操作 3. 函数返回值引用必须在函数申明时以及调用时都添加引用操作符 该例子使用的是对象方法的操作,同样适用于函数 <?php class A { public function & test1(& $a) { static $i = 0; var_dump($i); $

groovy脚本中(非类中)可以使用静态变量吗

问题描述 groovy脚本中(非类中)可以使用静态变量吗 如问题: 在一个groovy脚本中以下代码: static int a = 1; //现在这样是报错 // 业务逻辑 // xxxx a++: 我只希望a初始化一次,注意是在脚本中,不是在定义class中 换句话说,我是想在脚本groovy.lang.Script子类里放静态变量

php中的静态变量的基本用法

 静态变量只存在于函数作用域内,静态变量只存活在栈中,下次再调用这个函数的时候,该变量的值会保留下来 静态变量只存在于函数作用域内,静态变量只存活在栈中.一般的函数内变量在函数结束后会释放,比如局部变量,但是静态变量却不会.下次再调用这个函数的时候,该变量的值会保留下来.    静态的变量的基本用法    1. 在类中定义静态变量  [访问修饰符] static $变量名;  2. 如何访问静态变量  如果在类中访问 有两种方法 self::$静态变量名 , 类名::$静态变量名  如果在类外访

php中的静态变量的基本用法_php技巧

静态变量只存在于函数作用域内,静态变量只存活在栈中.一般的函数内变量在函数结束后会释放,比如局部变量,但是静态变量却不会.下次再调用这个函数的时候,该变量的值会保留下来. 静态的变量的基本用法 1. 在类中定义静态变量 [访问修饰符] static $变量名; 2. 如何访问静态变量 如果在类中访问 有两种方法 self::$静态变量名 , 类名::$静态变量名 如果在类外访问: 有一种方法 类名::$静态变量名 例子 复制代码 代码如下: class Child{ public $name;

C#中static静态变量的用法

原文:C#中static静态变量的用法 使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员static修饰符可用于类.字段.方法.属性.运算符.事件和构造函数,但不能用于索引器.析构函数或类以外的类型   静态全局变量 定义:在全局变量前,加上关键字 static 该变量就被定义成为了一个静态全局变量. 特点: A.该变量在全局数据区分配内存. B.初始化:如果不显式初始化,那么将被隐式初始化为0.   静态局部变量 定义:在局部变量前加上static关键字时,就定义了静态局

在.NET中使用静态变量来代替Application变量

application|变量|静态 wincheer|2002-3-1 --------------------------------------------------------------------------------     在传统的ASP程序中,我们总是使用Application对象来保存应用程序级的变量.这种方式比较耗费内存----看看那些空间供应商明目张胆的限制Application的数量就知道了.现在好了,我们有了.NET ,可以充分发挥静态变量的优点.一方面,可以作为应

asp.net中使用静态变量

asp.net|变量|静态 在asp.net中使用静态变量要比application更好的选择在传统的asp页面中,我们需要利用application变量传递一些特殊变量,在asp.net中任何页面都可以是类,Global.asax也不例外.我们只需要在Global.asax加入类名.  <%@ Application Classname="MyGlobals" %>然后我们定义几个静态变量.在vb.net中使用shared在C#中使用staticVB:<Script

static-objective中声明静态变量

问题描述 objective中声明静态变量 要做一个类似这样的类: public class test{public static final String tableName = ""asdfas""; public static final String id_Column = ""_id"";public static final String Z_ENT_Column = ""Z_ENT"

浅谈Android中关于静态变量(static)的使用问题

项目中,在不停地接收串口数据很长一段时间(几小时)后,会偶然性的报错.初步排除了oom和cpu紧张问题,因为是工业平板不方便调试,用了些比较笨的方法最后锁定在几个用了static的地方.在这里记录下Android中使用static的一些问题. 静态变量的生命周期遵守Java的设计.静态变量在类被load的时候分配内存,并存在于方法区.当类被卸载时,静态变量被销毁.在PC机的客户端程序中,一个类被加载和卸载,可简单的等同于jvm进程的启动和结束.在Android中,用的DVM也是一样的,不过And