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程序员
Jun 12 Python
Python的math模块中的常用数学函数整理
Feb 04 Python
Python创建xml文件示例
Mar 22 Python
python Pexpect 实现输密码 scp 拷贝的方法
Jan 03 Python
numpy库与pandas库axis=0,axis= 1轴的用法详解
May 27 Python
Python自动抢红包教程详解
Jun 11 Python
python 图片二值化处理(处理后为纯黑白的图片)
Nov 01 Python
Python 切分数组实例解析
Nov 07 Python
Python select及selectors模块概念用法详解
Jun 22 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
Jul 13 Python
python3中布局背景颜色代码分析
Dec 01 Python
Python Pandas数据分析之iloc和loc的用法详解
Nov 11 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数字格式化
2006/12/06 PHP
PHP Curl出现403错误的解决办法
2014/05/29 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
2016/10/25 PHP
PHP 获取指定地区的天气实例代码
2017/02/08 PHP
js 替换
2008/02/19 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
2014/04/29 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
将页面table内容与样式另存成excel文件的方法
2015/08/05 Javascript
简介alert()与console.log()的不同
2015/08/26 Javascript
javascript实现根据汉字获取简拼
2016/09/25 Javascript
详解前端自动化工具gulp自动添加版本号
2016/12/20 Javascript
canvas实现图像截取功能
2017/02/06 Javascript
vue2.0结合Element实现select动态控制input禁用实例
2017/05/12 Javascript
JS中LocalStorage与SessionStorage五种循序渐进的使用方法
2017/07/12 Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
2018/12/03 Javascript
[34:10]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
python目录与文件名操作例子
2016/08/28 Python
老生常谈Python进阶之装饰器
2017/05/11 Python
Python 加密与解密小结
2018/12/06 Python
python多线程案例之多任务copy文件完整实例
2019/10/29 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
2019/11/25 Python
python 将dicom图片转换成jpg图片的实例
2020/01/13 Python
德国Discount-Apotheke中文官网:DC德式康线上药房
2020/02/18 全球购物
语文教育专业推荐信范文
2013/11/25 职场文书
简历中自我评价范文3则
2013/12/14 职场文书
幼儿园英语教学反思
2014/01/30 职场文书
银行委托书范本
2014/04/04 职场文书
员工试用期自我评价
2014/09/18 职场文书
法人授权委托书样本
2014/09/19 职场文书
2014年销售工作总结范文
2014/12/01 职场文书
火锅店的开业营销方案范本!
2019/07/05 职场文书
微信小程序和php的登录实现
2021/04/01 PHP
详解Spring事件发布与监听机制
2021/06/30 Java/Android
Elasticsearch 聚合查询和排序
2022/04/19 Python
MYSQL中文乱码问题的解决方案
2022/06/14 MySQL
Java结构型设计模式之组合模式详解
2022/09/23 Java/Android