Python使用函数默认值实现函数静态变量,如果是静态方法,可以使用@staticmethod标注。

一、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 中类的静态变量怎么理解的详细内容,更多请关注php中文网其它相关文章!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

python定义静态变量_Python 中类的静态变量怎么理解相关推荐

  1. python中静态变量_Python中的静态变量和方法

    python中静态变量 Defining static variable and method is a common programming concept and is widely used i ...

  2. python 类静态属性_python面向对象之静态属性/静态方法/类方法/组合

    继续学习,不要松懈 #!/usr/bin/env python # coding:utf-8 class Campus: def __init__(self,name,addr,type): self ...

  3. python定义字符串数组_python数组声明

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 如何在python? 我无法在文档中找到对数组的任何引用... 我正在制作一个小 ...

  4. python定义一个人类_Python类的定义、继承及类对象使用方法简明教程

    Python编程中类的概念可以比作是某种类型集合的描述,如"人类"可以被看作一个类,然后用人类这个类定义出每个具体的人--你.我.他等作为其对象.类还拥有属性和功能,属性即类本身的 ...

  5. python怎么输出字加变量_python输出文字加变量

    python print 如何在输出中插入变量 没有任何基础在学编程,用的是简明Python教程,因为他讲的过于简单,所print '在此输出'+str(a)+'月有兔子'+str(b)+'只' pr ...

  6. python定义一个人类_python基础课程 第9章 面向对象编程(上) 一场人类进化史

    日月灿烂,若出其中,星汉灿烂,若出其里. -- 曹操.观沧海 东汉末年 人类文明以降,总会有无数的人通过对世界的观察和思考去总结我们从哪里来,要往哪里去. 遥远的古代我们的祖先通过想象力把数字变成了符 ...

  7. python整型变量的使用_python(二)数据类型与变量

    python基础之数据类型与变量 一.变量 变量 声明变量 #!/usr/bin/env python age=18 gender1='male' gender2='female' 变量作用:保存状态 ...

  8. python如何访问私有变量_Python基础_私有变量访问限制

    Python内置了一些特殊变量,以前后上下划线标注,同时我们自己要想定义一些变量,不想让外部访问,又该怎么做呢?更多内容请参考:Python学习指南 访问限制 在class内部,可以有属性和方法,而外 ...

  9. python 定义函数方法_Python定义一个函数的方法

    Python函数的定义 定义函数,也就是创建一个函数,可以理解为创建一个具有某些用途的工具.定义函数需要用 def 关键字实现,具体的语法格式如下: def 函数名(形参列表): //由零条到多条可执 ...

最新文章

  1. 4.QPixmap,QTransform,绘图函数的使用
  2. bzoj1110: [POI2007]砝码Odw
  3. 设计模式 四人帮_四人帮–代理设计模式
  4. dev 中 gridcontrol1 滚动条重绘_浏览器的重绘和回流(Repaint amp; Reflow)
  5. Oracle VM + Windows2003 Server 配置
  6. 用 GDB 调试Linux下的C程序
  7. python3 value counts函数_如何将value_counts()输出转换为数据帧?
  8. seo爬虫工具 php,爬虫工具有哪些(爬虫网页分析工具)
  9. 面试问题记录 (一)
  10. bootstrap下的双选时间插件使用方法
  11. Java 阻塞队列实现原理分析
  12. 分享五款好用的PDF编辑工具
  13. WPF打开子窗口给父窗口添加蒙版效果
  14. 爱心~~~红色的~~~小爱心组成的大爱心~~~
  15. chrome android 导航,将 Chrome for Android 的地址栏移动到屏幕下方[Android]
  16. amcharts嵌入到flex中
  17. Laravel 阿里大鱼短信接口
  18. 股市资深大牛用Python写了个股票价格实时MacOS应用程序!实时监控!
  19. 源生JS 之对象key值为数字时的取值及修改key值方法
  20. 【MySQL 8.0 OCP 1Z0-908认证考试】题库精讲--第五讲mysqlbinlog与mysqldump(下)

热门文章

  1. Java 编程开发的30个技巧
  2. tp5+小程序慕课资源共享
  3. Top 命令显示使用 CPU 核心数
  4. Manacher马拉车
  5. LeetCode刷题日记2022-1-15/1716. 计算力扣银行的钱-暴力求解
  6. 并发编程的三大特性——有序性(ordering)
  7. Matlab:数模02-多属性决策模型
  8. 计算机无法跳转登录页面,电脑连接校园网后CMCC登录界面不能弹出的解决方法...
  9. Jmeter 中的断言
  10. java8特性--list集合根据多个字段去重