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正则表达式判断字符串是否是全部小写示例
Dec 25 Python
Python面向对象特殊成员
Apr 24 Python
python读取二进制mnist实例详解
May 31 Python
Anaconda2 5.2.0安装使用图文教程
Sep 19 Python
python3.6利用pyinstall打包py为exe的操作实例
Oct 31 Python
python3.6 如何将list存入txt后再读出list的方法
Jul 02 Python
Python学习笔记之函数的定义和作用域实例详解
Aug 13 Python
Python3和PyCharm安装与环境配置【图文教程】
Feb 14 Python
matlab灰度图像调整及imadjust函数的用法详解
Feb 27 Python
Python自动采集微信联系人的实现示例
Feb 28 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
Mar 18 Python
Python torch.flatten()函数案例详解
Aug 30 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支持断点续传的源码
2010/05/16 PHP
php简单浏览目录内容的实现代码
2013/06/07 PHP
ThinkPHP模板输出display用法分析
2014/11/26 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
php实现生成PDF文件的方法示例【基于FPDF类库】
2018/07/21 PHP
自己的js工具 Event封装
2009/08/21 Javascript
jquery 循环显示div的示例代码
2013/10/18 Javascript
jquery统计复选框选中示例
2013/11/05 Javascript
document.write的几点使用心得
2014/05/14 Javascript
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
2014/11/12 Javascript
jQuery中on()方法用法实例
2015/01/19 Javascript
javascript浏览器窗口之间传递数据的方法
2015/01/20 Javascript
jquery带下拉菜单和焦点图代码分享
2015/08/24 Javascript
Javascript中apply、call、bind的巧妙使用
2016/08/18 Javascript
jQuery内容筛选选择器实例代码
2017/02/06 Javascript
详解angularjs利用ui-route异步加载组件
2017/05/21 Javascript
微信小程序获取用户openId的实现方法
2017/05/23 Javascript
微信小程序收藏功能的实现代码
2018/06/12 Javascript
React组件内事件传参实现tab切换的示例代码
2018/07/04 Javascript
微信小程序定位当前城市的方法
2018/07/19 Javascript
vue 监听某个div垂直滚动条下拉到底部的方法
2018/09/15 Javascript
Vue实现手机扫描二维码预览页面效果
2020/05/28 Javascript
为Python的Tornado框架配置使用Jinja2模板引擎的方法
2016/06/30 Python
Python 将RGB图像转换为Pytho灰度图像的实例
2017/11/14 Python
python和go语言的区别是什么
2020/07/20 Python
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
Hammitt官网:设计师手袋
2020/05/23 全球购物
共产党员承诺书
2014/03/25 职场文书
健康家庭事迹材料
2014/05/02 职场文书
教师党员公开承诺事项
2014/05/28 职场文书
运动会开幕词
2015/01/28 职场文书
2016年大学校运会广播稿件
2015/12/21 职场文书
2019朋友新婚祝福语精选
2019/10/10 职场文书
pytorch 实现变分自动编码器的操作
2021/05/24 Python
Win11任务栏太宽了怎么办?一招解决Win11任务栏太宽问题
2021/11/21 数码科技
Windows server 2012 配置Telnet以及用法详解
2022/04/28 Servers