Python使用函数默认值实现函数静态变量的方法
2016-06-04 20:41
651 查看
有时候我们想将一个变量定义成静态变量,在Java中可以用static关键字来修饰它,但是如果是python呢,python中可没有static关键字,那么在函数中想要把一个变量定义为静态变量改怎么做呢?虽然python不支持静态变量,但我们可以通过函数的默认值来实现静态变量的功能。
先看一段代码:
def func(a, b=[]):
b.append(a)
print b
func(1)
func(2)
func(3)理想中我们可能希望输出的是:
[1]
[2]
[3]而实际上却是:
PS:如果上例想要输出的是第一种情况,可以按下修改:
def func(a, b=None):
if b is None:
b = []
b.append(a)
print b
func(1)
func(2)
func(3)
先看一段代码:
def func(a, b=[]):
b.append(a)
print b
func(1)
func(2)
func(3)理想中我们可能希望输出的是:
[1]
[2]
[3]而实际上却是:
[1] [1, 2] [1, 2, 3]得到这个结果是因为在python中,函数的默认参数仅在该函数被定义的时候初始化一次。等等,初始化一次,这是不是跟静态变量一样的呢,因为静态变量也是在定义的时候被初始化一次。因此,我们可以利用函数默认参数的这个特性来实现静态变量。
PS:如果上例想要输出的是第一种情况,可以按下修改:
def func(a, b=None):
if b is None:
b = []
b.append(a)
print b
func(1)
func(2)
func(3)
相关文章推荐
- Ipython notebook安装
- Python Tricks(十六)—— list转换为str
- Python--基础学习--流程控制
- python 数据清理诺干错误
- Python内置函数chr() unichr() ord()
- Python机器学习开发环境搭建和GraphLab Create安装
- python爬虫的使用
- python str bytes转换
- Python进阶之函数式编程
- Python--详解Python中re.sub
- Opencv3.0-python的那些事儿:(四)、Opencv的图像阈值处理
- python学习第一天
- Python list 交集,并集,差集
- python学习 函数
- Python断行
- PYTHON 源码解析
- censys 数据库地理信息自定义接口(python版)
- python二叉树的层次遍历
- python之生成器
- 使用flask 发送电子邮件时候遇到的几个问题