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 相关文章推荐
wxPython使用系统剪切板的方法
Jun 16 Python
在Python的Django框架中为代码添加注释的方法
Jul 16 Python
python制作花瓣网美女图片爬虫
Oct 28 Python
安装ElasticSearch搜索工具并配置Python驱动的方法
Dec 22 Python
Python实例一个类背后发生了什么
Feb 09 Python
Python批量创建迅雷任务及创建多个文件
Feb 13 Python
Python使用正则表达式过滤或替换HTML标签的方法详解
Sep 25 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
Apr 21 Python
Tornado Web Server框架编写简易Python服务器
Jul 28 Python
python使用writerows写csv文件产生多余空行的处理方法
Aug 01 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
Nov 18 Python
Python学习之time模块的基本使用
Jan 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使用mysqli向数据库添加数据的方法
2015/03/20 PHP
javascritp实现input输入框相关限制用法
2007/06/29 Javascript
JS实现self的resend
2010/07/22 Javascript
jquery 回车事件实现代码
2011/08/23 Javascript
Javascript面向对象编程
2012/03/18 Javascript
JQuery操作tr和td内容的方法实例
2013/03/06 Javascript
js每隔5分钟执行一次ajax请求的实现方法
2013/11/27 Javascript
jquery模拟进度条实现方法
2015/08/03 Javascript
jquery实现简单的表单验证
2015/11/17 Javascript
详解Javascript百度地图接口开发文档中的类和方法
2017/02/07 Javascript
vue父子组件的数据传递示例
2017/03/07 Javascript
JScript实现表格的简单操作
2017/08/15 Javascript
解决VUEX兼容IE上的报错问题
2018/03/01 Javascript
NodeJS 中Stream 的基本使用
2018/07/30 NodeJs
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
2019/03/16 Javascript
Vue初始化中的选项合并之initInternalComponent详解
2020/06/11 Javascript
JS实现联想、自动补齐国家或地区名称的功能
2020/07/07 Javascript
vue实现移动端拖动排序
2020/08/21 Javascript
[03:09]2014DOTA2国际邀请赛 赛场上的美丽风景线 中国Coser也爱DOTA2
2014/07/20 DOTA
python中的内置函数getattr()介绍及示例
2014/07/20 Python
tensorflow中next_batch的具体使用
2018/02/02 Python
Django实战之用户认证(用户登录与注销)
2018/07/16 Python
Python读取mat文件,并保存为pickle格式的方法
2018/10/23 Python
详解numpy的argmax的具体使用
2019/05/27 Python
简单了解python数组的基本操作
2019/11/26 Python
python爬虫使用正则爬取网站的实现
2020/08/03 Python
俄罗斯电子产品、计算机和家用电器购物网站:OLDI
2019/10/27 全球购物
介绍一下SQL中union,intersect和minus
2012/04/05 面试题
商务英语广告词大全
2014/03/18 职场文书
经营管理策划方案
2014/05/22 职场文书
会计专业自荐信
2014/06/03 职场文书
仓库管理员岗位职责
2015/02/03 职场文书
2015年中秋节活动总结
2015/03/23 职场文书
百万英镑观后感
2015/06/09 职场文书
小学语文教师研修日志
2015/11/13 职场文书
td 内容自动换行 table表格td设置宽度后文字太多自动换行
2022/12/24 HTML / CSS