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


Posted in Python onMay 09, 2015

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

在python的类和函数(包括λ方法)中使用静态变量似乎是件不可能[Nothing is impossible]的事,
但总有解决的办法,下面通过实现一个类或函数的累加器来介绍一些较为非主流的方法

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

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)

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

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)

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

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 
3 
6 
10

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

Python 相关文章推荐
python使用wmi模块获取windows下硬盘信息的方法
May 15 Python
python正则分析nginx的访问日志
Jan 17 Python
Python之str操作方法(详解)
Jun 19 Python
Python:Scrapy框架中Item Pipeline组件使用详解
Dec 27 Python
新年快乐! python实现绚烂的烟花绽放效果
Jan 30 Python
python如何实现异步调用函数执行
Jul 08 Python
python之pymysql模块简单应用示例代码
Dec 16 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
Mar 13 Python
Anaconda和ipython环境适配的实现
Apr 22 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
May 16 Python
python+requests实现接口测试的完整步骤
Oct 27 Python
python 中[0]*2与0*2的区别说明
May 10 Python
Python实用日期时间处理方法汇总
May 09 #Python
python fabric使用笔记
May 09 #Python
Python字符串详细介绍
May 09 #Python
Python urllib、urllib2、httplib抓取网页代码实例
May 09 #Python
python MySQLdb Windows下安装教程及问题解决方法
May 09 #Python
Python MySQLdb Linux下安装笔记
May 09 #Python
python实现类的静态变量用法实例
May 08 #Python
You might like
php中通过curl检测页面是否被百度收录
2013/09/27 PHP
php实现水仙花数的4个示例分享
2014/04/08 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
js自定义事件代码说明
2011/01/31 Javascript
JS 仿腾讯发表微博的效果代码
2013/12/25 Javascript
Jqgrid设置全选(选择)及获取选择行的值示例代码
2013/12/28 Javascript
js中array的sort()方法使用介绍
2014/02/20 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
2014/03/28 Javascript
jQuery实现仿Google首页拖动效果的方法
2015/05/04 Javascript
JQuery中Bind()事件用法分析
2015/05/05 Javascript
让JavaScript中setTimeout支持链式操作的方法
2015/06/19 Javascript
JavaScript实现url参数转成json形式
2016/09/25 Javascript
微信小程序 LOL 英雄介绍开发实例
2016/09/30 Javascript
浅析Jquery操作select
2016/12/13 Javascript
React中如何引入Angular组件详解
2018/08/09 Javascript
vuejs router history 配置到iis的方法
2018/09/20 Javascript
es6函数中的作用域实例分析
2020/04/18 Javascript
JavaScript隐式类型转换代码实例
2020/05/29 Javascript
javascript实现多边形碰撞检测
2020/10/24 Javascript
分析Python中设计模式之Decorator装饰器模式的要点
2016/03/02 Python
Appium+Python自动化测试之运行App程序示例
2019/01/23 Python
Django异步任务之Celery的基本使用
2019/03/23 Python
Django 创建/删除用户的示例代码
2019/07/24 Python
python数据类型之间怎么转换技巧分享
2019/08/20 Python
Python实现剪刀石头布小游戏(与电脑对战)
2019/12/31 Python
Python Selenium参数配置方法解析
2020/01/19 Python
QT5 Designer 打不开的问题及解决方法
2020/08/20 Python
Python实例方法、类方法、静态方法区别详解
2020/09/05 Python
python中pdb模块实例用法
2021/01/15 Python
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
zooplus意大利:在线宠物商店
2019/08/07 全球购物
文明学生事迹材料
2014/01/29 职场文书
《充气雨衣》教学反思
2014/04/07 职场文书
公司年会策划方案
2014/05/17 职场文书
新学期开学标语
2014/06/30 职场文书
如何用RabbitMQ和Swoole实现一个异步任务系统
2021/05/29 PHP