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分析git log日志示例
Feb 27 Python
Python实现删除Android工程中的冗余字符串
Jan 19 Python
python判断图片宽度和高度后删除图片的方法
May 22 Python
python之当你发现QTimer不能用时的解决方法
Jun 21 Python
python爬虫实现中英翻译词典
Jun 25 Python
Python读取csv文件实例解析
Dec 30 Python
Pytorch实现LSTM和GRU示例
Jan 14 Python
python编程进阶之异常处理用法实例分析
Feb 21 Python
将pycharm配置为matlab或者spyder的用法说明
Jun 08 Python
Python将字典转换为XML的方法
Aug 01 Python
详解python 内存优化
Aug 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 mb_convert_encoding文字编码的转换函数介绍
2011/11/10 PHP
php数组声明、遍历、数组全局变量使用小结
2013/06/05 PHP
解析PHP工厂模式的好处
2013/06/18 PHP
ThinkPHP控制器详解
2015/07/27 PHP
thinkphp验证码的实现(form、ajax实现验证)
2016/07/28 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
2018/06/20 PHP
从数据结构的角度分析 for each in 比 for in 快的多
2013/07/07 Javascript
在JavaScript中使用timer示例
2014/05/08 Javascript
javascript event在FF和IE的兼容传参心得(绝对好用)
2014/07/10 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
js 博客内容进度插件详解
2017/02/19 Javascript
BootStrap表单验证 FormValidation 调整反馈图标位置的实例代码
2017/05/17 Javascript
vue多页面开发和打包正确处理方法
2018/04/20 Javascript
Vue2.0仿饿了么webapp单页面应用详细步骤
2018/07/08 Javascript
Vue Router history模式的配置方法及其原理
2019/05/30 Javascript
vue@cli3项目模板怎么使用public目录下的静态文件
2020/07/07 Javascript
vue 解决setTimeOut和setInterval函数无效报错的问题
2020/07/30 Javascript
在Python中关于中文编码问题的处理建议
2015/04/08 Python
Python 3 判断2个字典相同
2019/08/06 Python
Python 70行代码实现简单算式计算器解析
2019/08/30 Python
python判断一个变量是否已经设置的方法
2020/08/13 Python
Python 中如何使用 virtualenv 管理虚拟环境
2021/01/21 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
Spartoo葡萄牙鞋类网站:线上销售鞋履与时尚配饰
2017/01/11 全球购物
澳大利亚自然和有机的健康美容产品一站式商店:Ziani Beauty
2017/12/28 全球购物
.NET面试10题
2014/02/24 面试题
C#如何调用Windows程序打开一个文档
2014/12/26 面试题
入学生会自荐书范文
2014/02/05 职场文书
安全宣传标语口号
2014/06/06 职场文书
法院干警四风问题自我剖析材料
2014/09/29 职场文书
领导批评与自我批评范文
2014/10/16 职场文书
2015年大学班级工作总结
2015/04/28 职场文书
医学生自荐信范文(2016精选篇)
2016/01/28 职场文书
写自招自荐信的绝招!
2019/04/19 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书
apache ftpserver搭建ftp服务器
2022/05/20 Servers