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实现简单字典树的方法
Apr 29 Python
Python实现注册登录系统
Aug 08 Python
pandas 取出表中一列数据所有的值并转换为array类型的方法
Apr 11 Python
对Python中的@classmethod用法详解
Apr 21 Python
python和shell获取文本内容的方法
Jun 05 Python
查看python下OpenCV版本的方法
Aug 03 Python
Python设计模式之享元模式原理与用法实例分析
Jan 11 Python
python selenium执行所有测试用例并生成报告的方法
Feb 13 Python
Pandas库之DataFrame使用的学习笔记
Jun 21 Python
Tensorflow分批量读取数据教程
Feb 07 Python
基于python图像处理API的使用示例
Apr 03 Python
python字典的值可以修改吗
Jun 29 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
php异常处理技术,顶级异常处理器
2012/06/13 PHP
解析PHP中ob_start()函数的用法
2013/06/24 PHP
推荐5款跨平台的PHP编辑器
2014/12/25 PHP
合格的PHP程序员必备技能
2015/11/13 PHP
WordPress中编写自定义存储字段的相关PHP函数解析
2015/12/25 PHP
总结的一些PHP开发中的tips(必看篇)
2017/03/24 PHP
PHP下载文件函数与用法示例
2019/09/27 PHP
javascript 表单规则集合对象
2009/07/21 Javascript
Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法
2013/01/27 Javascript
解析window.open的使用方法总结
2013/06/19 Javascript
Javascript call和apply区别及使用方法
2013/11/14 Javascript
nodejs开发环境配置与使用
2014/11/17 NodeJs
JavaScript实现文字跟随鼠标特效
2015/08/06 Javascript
js格式化输入框内金额、银行卡号
2016/02/01 Javascript
详解JavaScript中|单竖杠运算符的使用方法
2016/05/23 Javascript
JavaScript实现时间倒计时跳转(推荐)
2016/06/28 Javascript
JS中substring与substr的用法
2016/11/16 Javascript
bootstrap日期插件daterangepicker使用详解
2017/10/19 Javascript
详解mpvue开发小程序小总结
2018/07/25 Javascript
highCharts提示框中显示当前时间的方法
2019/01/18 Javascript
JS实现音量控制拖动
2020/01/15 Javascript
[01:06]欢迎来到上海,TI9
2018/08/26 DOTA
python TKinter获取文本框内容的方法
2018/10/11 Python
Django app配置多个数据库代码实例
2019/12/17 Python
tensorflow2.0的函数签名与图结构(推荐)
2020/04/28 Python
技校生自我鉴定
2013/12/08 职场文书
师范学院教师自荐书
2014/01/31 职场文书
培训自我鉴定
2014/01/31 职场文书
校园新闻广播稿5篇
2014/10/10 职场文书
小学生优秀评语
2014/12/29 职场文书
辞职信模板(中英文版)
2015/02/27 职场文书
汉字听写大会观后感
2015/06/12 职场文书
宾馆安全管理制度
2015/08/06 职场文书
2016入党积极分子党课学习心得体会
2015/10/09 职场文书
《乌鸦喝水》教学反思
2016/02/19 职场文书
css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效
2021/04/29 HTML / CSS