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计算斗牛游戏概率算法实例分析
Sep 26 Python
Python多线程threading和multiprocessing模块实例解析
Jan 29 Python
python 获取键盘输入,同时有超时的功能示例
Nov 13 Python
选择Python写网络爬虫的优势和理由
Jul 07 Python
Python中模块(Module)和包(Package)的区别详解
Aug 07 Python
Python 利用高德地图api实现经纬度与地址的批量转换
Aug 14 Python
python实现飞行棋游戏
Feb 05 Python
python+OpenCV实现图像拼接
Mar 05 Python
PyCharm 无法 import pandas 程序卡住的解决方式
Mar 09 Python
Python参数传递机制传值和传引用原理详解
May 22 Python
JAVA及PYTHON质数计算代码对比解析
Jun 10 Python
Python Numpy之linspace用法说明
Apr 17 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数据库中的所有表名的代码
2011/04/23 PHP
深入Nginx + PHP 缓存详解
2013/07/11 PHP
composer.lock文件的作用
2016/02/03 PHP
Laravel中为什么不使用blpop取队列详析
2018/08/01 PHP
ie8 不支持new Date(2012-11-10)问题的解决方法
2013/07/31 Javascript
jquery控制display属性为none或block
2014/03/31 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
基于jQuery实现的QQ表情插件
2015/08/25 Javascript
基于JavaScript操作DOM常用的API小结
2015/12/01 Javascript
省市选择的简单实现(基于zepto.js)
2016/06/21 Javascript
详解Vue生命周期的示例
2017/03/10 Javascript
详解nodejs中的process进程
2017/03/19 NodeJs
微信小程序 支付功能实现PHP实例详解
2017/05/12 Javascript
Vue + Vue-router 同名路由切换数据不更新的方法
2017/11/20 Javascript
vue、react等单页面项目应该这样子部署到服务器
2018/01/03 Javascript
微信小程序从注册账号到上架(图文详解)
2019/07/17 Javascript
Windows上node.js的多版本管理工具用法实例分析
2019/11/06 Javascript
javascript将16进制的字符串转换为10进制整数hex
2020/03/05 Javascript
[42:11]TNC vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
2014/05/23 Python
Python中实现常量(Const)功能
2015/01/28 Python
使用Python标准库中的wave模块绘制乐谱的简单教程
2015/03/30 Python
SQLite3中文编码 Python的实现
2017/01/11 Python
Pandas中Series和DataFrame的索引实现
2019/06/27 Python
python验证码图片处理(二值化)
2019/11/01 Python
Python中logging日志记录到文件及自动分割的操作代码
2020/08/05 Python
浅谈CSS3 box-sizing 属性 有趣的盒模型
2019/04/02 HTML / CSS
h5使用canvas画布实现手势解锁
2019/01/04 HTML / CSS
巴西电子产品购物网站:Saldão da Informática
2018/01/09 全球购物
我看到了用指针调用函数的不同语法形式
2014/07/16 面试题
实习单位推荐信范文
2013/11/27 职场文书
敬老院标语
2014/06/27 职场文书
关于青春的演讲稿500字
2014/08/22 职场文书
安全责任书
2015/01/29 职场文书
上班旷工检讨书
2015/08/15 职场文书
win10拖拽文件时崩溃怎么解决?win10文件不能拖拽问题解决方法
2022/08/14 数码科技