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

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

一、Python函数默认值

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

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

先来看一段示例代码:

立即学习“Python免费学习笔记(深入)”;

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 

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

二、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程序设计有一定的帮助作用。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2290685.html

(0)
上一篇 2025年2月28日 00:29:14
下一篇 2025年2月24日 01:37:24

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Python中除法使用的注意事项

    本文实例讲解了python中除法使用的注意事项,是非常重要的技巧,对于python程序设计来说有很好的借鉴价值。具体分析如下: 现来看如下示例: def avg(first, *rest): return (first + sum(rest…

    编程技术 2025年2月28日
    200
  • Python中正则表达式的用法实例汇总

    正则表达式是python程序设计中非常实用的功能,本文就常用的正则表达式做一汇总,供大家参考之用。具体如下: 一、字符串替换 1.替换所有匹配的子串 用newstring替换subject中所有与正则表达式regex匹配的子串 result…

    编程技术 2025年2月28日
    200
  • Python实现全角半角转换的方法

    本文实例讲解了python实现全角半角转换的方法,相信对于大家的python学习能够起到一定的参考借鉴价值。如下所示: 一、全角半角转换概述: 全角字符unicode编码从65281~65374 (十六进制 0xFF01 ~ 0xFF5E)…

    编程技术 2025年2月28日
    200
  • Python中dictionary items()系列函数的用法实例

    本文实例讲述了python中dictionary items()系列函数的用法,对python程序设计有很好的参考借鉴价值。具体分析如下: 先来看一个示例: import html # available only in Python 3.…

    编程技术 2025年2月28日
    200
  • Python算法之栈(stack)的实现

    本文以实例形式展示了python算法中栈(stack)的实现,对于学习数据结构域算法有一定的参考借鉴价值。具体内容如下: 1.栈stack通常的操作: Stack() 建立一个空的栈对象push() 把一个元素添加到栈的最顶层pop() 删…

    编程技术 2025年2月28日
    200
  • Python 执行字符串表达式函数(eval exec execfile)

    仔细研读后学习了三个函数:eval:计算字符串中的表达式exec:执行字符串中的语句execfile:用来执行一个文件 需注意的是,exec是一个语句,而eval()和execfile()则是内建built-in函数。 Python 2.7…

    编程技术 2025年2月28日
    200
  • Python异常处理总结

    本文较为详细的罗列了python常见的异常处理,供大家参考,具体如下: 1. 抛出异常和自定义异常 Python用异常对象(exception object)表示异常情况,遇到错误后,会引发异常。如果异常对象并未被处理或捕捉,程序就会用所谓…

    编程技术 2025年2月28日
    200
  • Python def函数的定义、使用及参数传递实现代码

    python编程中对于某些需要重复调用的程序,可以使用函数进行定义,基本形式为: def 函数名(参数1, 参数2, ……, 参数N): 执行语句函数名为调用的表示名,参数则是传入的参数,可以更具需要定义,也可以没有。 # 例1:简单的函数…

    编程技术 2025年2月28日
    200
  • Python-基础-入门 简介

    Python简介及入门 python为什么是python 选择自己喜欢的语言,这往往不容易,更多的是根据需求 话说,之前是java,大学用了三年+实习半年,后来入职做测试开发后,碰到了python 到最后,转python开发了 写起来快,缩…

    编程技术 2025年2月28日
    200
  • Python3基础之函数用法

    一般来说,函数(function)是组织好的、可重复使用的、具有一定功能的代码段。函数能提高应用的模块性和代码的重复利用率,在python中已经提供了很多的内建函数,比如print(),同时python还允许用户自定义函数。 本文就来实例总…

    编程技术 2025年2月28日
    200

发表回复

登录后才能评论