Python使用函数默认值实现函数静态变量的方法


Posted in Python onAugust 18, 2014

本文实例展示了Python使用函数默认值实现函数静态变量的方法,具体方法如下:

一、Python函数默认值

Python函数默认值的使用可以在函数调用时写代码提供方便,很多时候我们只要使用默认值就可以了。 所以函数默认值在python中用到的很多,尤其是在类中间,类的初始化函数中一帮都会用到默认值。 使用类时能够方便的创建类,而不需要传递一堆参数。

只要在函数参数名后面加上 ”=defalut_value”,函数默认值就定义好了。有一个地方需要注意的是,有默认值的参数必须在函数参数列表的最后,不允许将没有默认值的参数放在有默认值的参数后,因为如果你那样定义的话,解释器将不知道如何去传递参数。

先来看一段示例代码:

def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
  while True:
    ok = raw_input(prompt)
    if ok in ('y', 'ye', 'yes'): return True
    if ok in ('n', 'no', 'nop', 'nope'): return False
    retries = retries - 1
    if retries < 0: raise IOError, 'refusenik user'
    print complaint

你调用上面的函数时,可以修改重试次数和输出的提示语言,如果你比较懒得话,那么什么都不用改。

二、python使用函数默认值来实现函数静态变量的功能

Python中是不支持静态变量的,但是我们可以通过函数的默认值来实现静态变量的功能。
当函数的默认值是内容是可变的类时,类的内容可变,而类的名字没变。(相当于开辟的内存区域没有变,而其中内容可以变化)。
这是因为python中函数的默认值只会被执行一次,(和静态变量一样,静态变量初始化也是被执行一次。)这就是他们的共同点。

再来看下面的程序片段:

def f(a, L=[]):
  L.append(a)
  return L
 
print f(1)
print f(2)
print f(3)
print f(4,['x'])
print f(5)

其输出结果是:

[1]
[1, 2]
[1, 2, 3]
['x', 4]
[1, 2, 3, 5]

前面的好理解,为什么最后 “print f(5)”的输出是 “[1, 2, 3, 5]”呢?

这是因为 “print f(4,['x'])”时,默认变量并没有被改变,因为默认变量的初始化只是被执行了一次(第一次使用默认值调用),初始化执行开辟的内存区(我们可以称之为默认变量)没有被改变,所以最后的输出结果是“[1, 2, 3, 5]”。

相信本文所述实例对大家Python程序设计有一定的帮助作用。

Python 相关文章推荐
Python Requests 基础入门
Apr 07 Python
Python 编码Basic Auth使用方法简单实例
May 25 Python
python的mysqldb安装步骤详解
Aug 14 Python
python方向键控制上下左右代码
Jan 20 Python
快速解决PyCharm无法引用matplotlib的问题
May 24 Python
Python 使用matplotlib模块模拟掷骰子
Aug 08 Python
Golang GBK转UTF-8的例子
Aug 26 Python
利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统
Sep 25 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
Oct 28 Python
wxPython绘图模块wxPyPlot实现数据可视化
Nov 19 Python
关于tf.TFRecordReader()函数的用法解析
Feb 17 Python
Python包资源下载路径报404解决方案
Nov 05 Python
Python中正则表达式的用法实例汇总
Aug 18 #Python
python中enumerate的用法实例解析
Aug 18 #Python
Python采用raw_input读取输入值的方法
Aug 18 #Python
Python中Collection的使用小技巧
Aug 18 #Python
Python实现3行代码解简单的一元一次方程
Aug 18 #Python
Python统计列表中的重复项出现的次数的方法
Aug 18 #Python
Python中无限元素列表的实现方法
Aug 18 #Python
You might like
windows下PHP APACHE MYSQ完整配置
2007/01/02 PHP
php生成图形验证码几种方法小结
2013/08/15 PHP
php递归删除目录下的文件但保留的实例分享
2014/05/10 PHP
php进行ip地址掩码运算处理的方法
2016/07/11 PHP
[原创]php正则删除html代码中class样式属性的方法
2017/05/24 PHP
django中的ajax组件教程详解
2018/10/18 PHP
laravel添加前台跳转成功页面示例
2019/10/22 PHP
JS中剪贴板兼容性、判断复制成功或失败
2021/03/09 Javascript
JavaScript 动态创建VML的方法
2009/10/14 Javascript
jquery tab插件精简版分享
2011/09/10 Javascript
JS网页图片按比例自适应缩放实现方法
2014/01/15 Javascript
js获取视频时长代码
2014/04/10 Javascript
js实现正则匹配中文标点符号的方法
2015/12/23 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
2017/06/30 Javascript
node简单实现一个更改头像功能的示例
2017/12/29 Javascript
关于axios不能使用Vue.use()浅析
2018/01/12 Javascript
微信小程序实现的涂鸦功能示例【附源码下载】
2018/01/12 Javascript
vue对storejs获取的数据进行处理时遇到的几种问题小结
2018/03/20 Javascript
JavaScript创建对象的四种常用模式实例分析
2019/01/11 Javascript
详解a标签添加onclick事件的几种方式
2019/03/29 Javascript
详解小程序中h5页面onShow实现及跨页面通信方案
2019/05/30 Javascript
微信小程序页面间传递数组对象方法解析
2019/11/06 Javascript
Echarts实现单条折线可拖拽效果
2019/12/19 Javascript
js实现简单的贪吃蛇游戏
2020/04/23 Javascript
javascript运行机制之执行顺序理解
2020/08/03 Javascript
使用Python编写一个模仿CPU工作的程序
2015/04/16 Python
使用Python导出Excel图表以及导出为图片的方法
2015/11/07 Python
python实现WebSocket服务端过程解析
2019/10/18 Python
Python函数参数类型及排序原理总结
2019/12/19 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
2020/05/27 Python
Fox Racing英国官网:越野摩托车和山地自行车服装
2020/02/26 全球购物
教育实习生的自我评价分享
2013/11/21 职场文书
《猴子种树》教学反思
2014/02/14 职场文书
《邮票齿孔的故事》教学反思
2014/02/22 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书
JavaScript事件的委托(代理)的用法示例详解
2022/02/18 Javascript