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开发vim插件及心得分享
Nov 04 Python
举例介绍Python中的25个隐藏特性
Mar 30 Python
Python的SQLalchemy模块连接与操作MySQL的基础示例
Jul 11 Python
Python中偏函数用法示例
Jun 07 Python
Python实现批量执行同目录下的py文件方法
Jan 11 Python
对python过滤器和lambda函数的用法详解
Jan 21 Python
pandas DataFrame 删除重复的行的实现方法
Jan 29 Python
Python3.6中Twisted模块安装的问题与解决
Apr 15 Python
Python变量格式化输出实现原理解析
Aug 06 Python
python 如何实现遗传算法
Sep 22 Python
Python实现冒泡排序算法的完整实例
Nov 04 Python
Python实现对齐打印 format函数的用法
Apr 28 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
Yii开启片段缓存的方法
2016/03/28 PHP
php短信接口代码
2016/05/13 PHP
JS操作Cookies包括(读取添加与删除)
2012/12/26 Javascript
js和jquery如何获取图片真实的宽度和高度
2014/09/28 Javascript
JavaScript常用小技巧小结
2014/12/29 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
2015/03/04 Javascript
用NodeJS实现批量查询地理位置的经纬度接口
2016/08/16 NodeJs
在javascript中,null>=0 为真,null==0却为假,null的值详解
2017/02/22 Javascript
jquery实现图片放大点击切换
2017/06/06 jQuery
基于node.js的fs核心模块读写文件操作(实例讲解)
2017/09/10 Javascript
vue vue-Router默认hash模式修改为history需要做的修改详解
2018/09/13 Javascript
JavaScript实现邮箱后缀提示功能的示例代码
2018/12/13 Javascript
js实现计算器功能
2020/08/10 Javascript
[02:28]DOTA2亚洲邀请赛 LGD战队巡礼
2015/02/03 DOTA
[42:32]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.27
2020/12/01 DOTA
Python使用multiprocessing实现一个最简单的分布式作业调度系统
2016/03/14 Python
离线安装Pyecharts的步骤以及依赖包流程
2020/04/23 Python
使用Python写一个贪吃蛇游戏实例代码
2017/08/21 Python
python bmp转换为jpg 并删除原图的方法
2018/10/25 Python
linux环境中没有网络怎么下载python
2019/07/07 Python
python with (as)语句实例详解
2020/02/04 Python
python实现录屏功能(亲测好用)
2020/03/02 Python
python实现单机五子棋
2020/08/28 Python
Python类成员继承重写的实现
2020/09/16 Python
html5各种页面切换效果和模态对话框用法总结
2014/12/15 HTML / CSS
全面解析HTML5中的标准属性与自定义属性
2016/02/18 HTML / CSS
英国领先的瓷砖专家:Walls and Floors
2018/04/27 全球购物
Pottery Barn阿联酋:购买家具、家居装饰及更多
2019/12/08 全球购物
介绍一下XMLHttpRequest对象
2012/02/12 面试题
高中毕业自我鉴定范文
2013/10/02 职场文书
食品营养与检测应届生求职信
2013/11/08 职场文书
房地产开发计划书
2014/01/10 职场文书
司马光教学反思
2014/02/01 职场文书
银行进社区活动总结
2014/07/07 职场文书
postgresql无序uuid性能测试及对数据库的影响
2021/06/11 PostgreSQL
一次MySQL启动导致的事故实战记录
2021/09/15 MySQL