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中映射类型(字典)操作符的概念和使用
Aug 19 Python
关于Python中异常(Exception)的汇总
Jan 18 Python
opencv与numpy的图像基本操作
Mar 08 Python
Python OpenCV调用摄像头检测人脸并截图
Aug 20 Python
python用线性回归预测股票价格的实现代码
Sep 04 Python
python几种常用功能实现代码实例
Dec 25 Python
Python流程控制常用工具详解
Feb 24 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
Feb 28 Python
python计算Content-MD5并获取文件的Content-MD5值方式
Apr 03 Python
Django 用户登陆访问限制实例 @login_required
May 13 Python
Pycharm配置lua编译环境过程图解
Nov 28 Python
python实现无边框进度条的实例代码
Dec 30 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读取mysql中文数据出现乱码的解决方法
2013/08/16 PHP
php array_key_exists() 与 isset() 的区别
2016/10/24 PHP
PHP带节点操作的无限分类实现方法详解
2016/11/09 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
PHP实现微信小程序人脸识别刷脸登录功能
2018/05/24 PHP
PHP实现通过CURL上传文件功能示例
2018/05/30 PHP
Jquery实现图片左右自动滚动示例
2013/09/25 Javascript
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
JS获取几种URL地址的方法小结
2014/02/26 Javascript
DOM 高级编程
2015/05/06 Javascript
JavaScript的9种继承实现方式归纳
2015/05/18 Javascript
php利用curl获取远程图片实现方法
2015/10/26 Javascript
javascript事件处理模型实例说明
2016/05/31 Javascript
JavaScript中浅讲ajax图文详解
2016/11/11 Javascript
JavaScript闭包_动力节点Java学院整理
2017/06/27 Javascript
详解ES6之async+await 同步/异步方案
2017/09/19 Javascript
Vue render渲染时间戳转时间,时间转时间戳及渲染进度条效果
2018/07/27 Javascript
vue实现多个元素或多个组件之间动画效果
2018/09/25 Javascript
分享5个小技巧让你写出更好的 JavaScript 条件语句
2018/10/20 Javascript
JavaScript两种计时器的实例讲解
2019/01/31 Javascript
Vue.js+cube-ui(Scroll组件)实现类似头条效果的横向滚动导航条
2019/06/24 Javascript
17道题让你彻底理解JS中的类型转换
2019/08/08 Javascript
jQuery 选择方法及$(this)用法实例分析
2020/05/19 jQuery
详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别
2020/08/12 Javascript
JSON stringify方法原理及实例解析
2020/10/23 Javascript
jquery实现广告上下滚动效果
2021/03/04 jQuery
python抽取指定url页面的title方法
2018/05/11 Python
自适应线性神经网络Adaline的python实现详解
2019/09/30 Python
aws 通过boto3 python脚本打pach的实现方法
2020/05/10 Python
集世界奢侈品和设计师品牌的意大利精品买手店:Tessabit
2019/08/17 全球购物
编辑个人求职信范文
2013/09/21 职场文书
毕业生精彩的自我评价分享
2013/10/06 职场文书
国企干部对照检查材料
2014/08/22 职场文书
万能检讨书
2015/01/27 职场文书
2015年中秋节演讲稿
2015/03/20 职场文书
如何利用JavaScript实现二叉搜索树
2021/04/02 Javascript