设为首页 收藏本站
查看: 634|回复: 0

[经验分享] 内存、绑定-python tips -by小雨

[复制链接]

尚未签到

发表于 2017-4-30 11:16:40 | 显示全部楼层 |阅读模式
  本文纯属个人见解,是对前面学习的总结,如有描述不正确的地方还请高手指正~
  且看如下例子:

>>> l = [1, 2, 3]
>>> ll = l
>>> ll.remove(1)
>>> l
[
2, 3]
>>>
>>> l = [1, 2, 3]
>>> ll = l[:]
>>> ll.remove(1)
>>> l
[
1, 2, 3]
>>>

  是否是有点大吃一惊,跟c 语言怎么不一样呢?!

>>>a = [1]
>>>b = a
>>>b[0] = 2
>>>a
[2]

  列表是可变象对型类,因此传递的时候,量变名b绑定的内存地址与a绑定的内存地址是统一地址。

>>> x = 1
>>> y = 1
>>> x is y
True
>>>

  数值为不可变型类,x与y指向的是数值为1的统一内存地址。
  
  对于类说来也是如此:

class b:
x
= []
def set(self):
self.x.append(
1)
def get(self):
return self.x
for i in range(3):
a
= b()
print b.__dict__
a.set()
print a.get()

  结果:

{'x': [], '__module__': '__main__', 'set': <function set at 0x7f89a319bcf8>, '__doc__': None, 'get': <function get at 0x7f89a319bd70>}
[1]
{'x': [1], '__module__': '__main__', 'set': <function set at 0x7f89a319bcf8>, '__doc__': None, 'get': <function get at 0x7f89a319bd70>}
[1, 1]
{'x': [1, 1], '__module__': '__main__', 'set': <function set at 0x7f89a319bcf8>, '__doc__': None, 'get': <function get at 0x7f89a319bd70>}
[1, 1, 1]
 


  python中,万物皆象对。python中不存在所谓的传值用调,一切传递的都是象对的引用,也可以认为是传址。
  python中,象对分为可变(mutable)和不可变(immutable)两种型类。
  元组(tuple)、数值型(number)、字符串(string)均为不可变象对,而字典范(dictionary)和列表型(list)的象对是可变象对。

>>>a = 1 #将名字a与内存中值为1的内存绑定在一起
>>>a = 2 #将名字a与内存中值为2的内存绑定在一起,而不是修改来原a绑定的内存中的值,这时,内存中值为1的内存地址引用计数-1,当引用计数为0时,内存地址被回收
>>>b = a #量变b执行与a绑定的内存
>>>b = 3 #创立一个内存值为3的内存地址与量变名字b行进绑定。这是a还是指向值为2的内存地址。
>>>a,b
>>>(2,3)

  python数函参数的默认值与此的关系及例子,详见 python tips - 意注 python 数函参数的默认值:http://www.cnblogs.com/congbo/archive/2012/11/29/2794413.html
  考参:
  http://thomaschen2011.iteye.com/blog/1441254
  http://www.cnblogs.com/evening/archive/2012/04/11/2442788.html
  文章结束给大家分享下程序员的一些笑话语录: 乔布斯:怎么样还是咱安全吧!黑客:你的浏览器支持国内网银吗?苹果可以玩国内的网游吗乔布斯:......不可以黑客:那我研究你的漏洞干嘛,我也需要买奶粉!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-371147-1-1.html 上篇帖子: python安装是 -fPIC问题的解决 下篇帖子: 浅谈五大Python Web框架[转]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表