python定义静态变量_Python 中类的静态变量怎么理解
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 中类的静态变量怎么理解相关推荐
- python中静态变量_Python中的静态变量和方法
python中静态变量 Defining static variable and method is a common programming concept and is widely used i ...
- python 类静态属性_python面向对象之静态属性/静态方法/类方法/组合
继续学习,不要松懈 #!/usr/bin/env python # coding:utf-8 class Campus: def __init__(self,name,addr,type): self ...
- python定义字符串数组_python数组声明
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 如何在python? 我无法在文档中找到对数组的任何引用... 我正在制作一个小 ...
- python定义一个人类_Python类的定义、继承及类对象使用方法简明教程
Python编程中类的概念可以比作是某种类型集合的描述,如"人类"可以被看作一个类,然后用人类这个类定义出每个具体的人--你.我.他等作为其对象.类还拥有属性和功能,属性即类本身的 ...
- python怎么输出字加变量_python输出文字加变量
python print 如何在输出中插入变量 没有任何基础在学编程,用的是简明Python教程,因为他讲的过于简单,所print '在此输出'+str(a)+'月有兔子'+str(b)+'只' pr ...
- python定义一个人类_python基础课程 第9章 面向对象编程(上) 一场人类进化史
日月灿烂,若出其中,星汉灿烂,若出其里. -- 曹操.观沧海 东汉末年 人类文明以降,总会有无数的人通过对世界的观察和思考去总结我们从哪里来,要往哪里去. 遥远的古代我们的祖先通过想象力把数字变成了符 ...
- python整型变量的使用_python(二)数据类型与变量
python基础之数据类型与变量 一.变量 变量 声明变量 #!/usr/bin/env python age=18 gender1='male' gender2='female' 变量作用:保存状态 ...
- python如何访问私有变量_Python基础_私有变量访问限制
Python内置了一些特殊变量,以前后上下划线标注,同时我们自己要想定义一些变量,不想让外部访问,又该怎么做呢?更多内容请参考:Python学习指南 访问限制 在class内部,可以有属性和方法,而外 ...
- python 定义函数方法_Python定义一个函数的方法
Python函数的定义 定义函数,也就是创建一个函数,可以理解为创建一个具有某些用途的工具.定义函数需要用 def 关键字实现,具体的语法格式如下: def 函数名(形参列表): //由零条到多条可执 ...
最新文章
- 4.QPixmap,QTransform,绘图函数的使用
- bzoj1110: [POI2007]砝码Odw
- 设计模式 四人帮_四人帮–代理设计模式
- dev 中 gridcontrol1 滚动条重绘_浏览器的重绘和回流(Repaint amp; Reflow)
- Oracle VM + Windows2003 Server 配置
- 用 GDB 调试Linux下的C程序
- python3 value counts函数_如何将value_counts()输出转换为数据帧?
- seo爬虫工具 php,爬虫工具有哪些(爬虫网页分析工具)
- 面试问题记录 (一)
- bootstrap下的双选时间插件使用方法
- Java 阻塞队列实现原理分析
- 分享五款好用的PDF编辑工具
- WPF打开子窗口给父窗口添加蒙版效果
- 爱心~~~红色的~~~小爱心组成的大爱心~~~
- chrome android 导航,将 Chrome for Android 的地址栏移动到屏幕下方[Android]
- amcharts嵌入到flex中
- Laravel 阿里大鱼短信接口
- 股市资深大牛用Python写了个股票价格实时MacOS应用程序!实时监控!
- 源生JS 之对象key值为数字时的取值及修改key值方法
- 【MySQL 8.0 OCP 1Z0-908认证考试】题库精讲--第五讲mysqlbinlog与mysqldump(下)