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的Template使用指南
Sep 11 Python
Python数据结构与算法之使用队列解决小猫钓鱼问题
Dec 14 Python
使用python绘制3维正态分布图的方法
Dec 29 Python
网易有道2017内推编程题 洗牌(python)
Jun 19 Python
Django 重写用户模型的实现
Jul 29 Python
python3调用windows dos命令的例子
Aug 14 Python
python ctypes库2_指定参数类型和返回类型详解
Nov 19 Python
详解python opencv、scikit-image和PIL图像处理库比较
Dec 26 Python
浅析Python3 pip换源问题
Jan 06 Python
Keras使用ImageNet上预训练的模型方式
May 23 Python
如何理解python面向对象编程
Jun 01 Python
python re.match()用法相关示例
Jan 27 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版网站缓存加快打开速度的方法分享
2012/06/03 PHP
php获取从html表单传递数组的方法
2015/03/20 PHP
PHP PDOStatement::fetchColumn讲解
2019/01/31 PHP
JavaScript写的一个DIV 弹出网页对话框
2009/08/14 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
js实现匹配时换色的输入提示特效代码
2015/08/17 Javascript
详解Webwork中Action 调用的方法
2016/02/02 Javascript
JavaScript检查子字符串是否在字符串中的方法
2016/02/03 Javascript
解决jQuery ajax动态新增节点无法触发点击事件的问题
2017/05/24 jQuery
es6+angular1.X+webpack 实现按路由功能打包项目的示例
2017/08/16 Javascript
JS中原始值和引用值的储存方式示例详解
2018/03/23 Javascript
vue异步axios获取的数据渲染到页面的方法
2018/08/09 Javascript
JS字典Dictionary类定义与用法示例
2019/02/01 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
2019/03/07 Javascript
Vue+webpack实现懒加载过程解析
2020/02/17 Javascript
JavaScript利用键盘码控制div移动
2020/03/19 Javascript
[03:09]2014DOTA2国际邀请赛 Mushi前队友送上祝福
2014/07/12 DOTA
[01:31:03]DOTA2完美盛典全回顾 见证十五项大奖花落谁家
2017/11/28 DOTA
py2exe 编译ico图标的代码
2013/03/08 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
2018/01/27 Python
Django中使用Whoosh进行全文检索的方法
2019/03/31 Python
Python使用uuid库生成唯一标识ID
2020/02/12 Python
Pytorch中.new()的作用详解
2020/02/18 Python
Python全面分析系统的时域特性和频率域特性
2020/02/26 Python
Python 实现集合Set的示例
2020/12/21 Python
Jupyter Notebook 远程访问配置详解
2021/01/11 Python
HTML5画渐变背景图片并自动下载实现步骤
2013/11/18 HTML / CSS
Michael Kors美国官网:美式奢侈生活风格的代表
2016/11/25 全球购物
英国婚礼商城:Wedding Mall
2019/11/02 全球购物
西班牙用户之间买卖视频游戏的平台:Wakkap
2020/03/21 全球购物
一道SQL面试题
2012/12/31 面试题
品质主管的岗位职责
2013/12/04 职场文书
解约证明模板
2015/06/19 职场文书
只需要100行Python代码就可以实现的贪吃蛇小游戏
2021/05/27 Python
教你如何用Python实现人脸识别(含源代码)
2021/06/23 Python
Pyqt5将多个类组合在一个界面显示的完整示例
2021/09/04 Python