对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧!

在【python 标准库】中看到的一段代码,非常有帮助:

# @param python 图 自身遍历及弱引用使用

# @author 编程之家 jb51.cc|jb51.cc

def all_nodes(self):

yield self

n = self.other

while n and n.name != self.name:

yield n

n = n.other

if n is self:

yield n

return

# End www.jb51.cc

首尾的2处yield均只返回一次,作为循环图的起点、终点,而n作为图可能的节点,每次在next调用中均返回next节点

利用这个迭代器,就可以轻松打印出图的结构:

def __str__(self):

return '->'.join((n.name for n in self.all_nodes()))

Graph:

one->two->three->one

实现一个图结构需要利用python里面的弱引用,

我们先看一下标准的向图结构中增加下一节点的代码:

def set_next(self,other):

print '%s.next %r' % ( self.name,other)

self.other = other

这样绑定后,在属性字段中,增加一个对于下一节点的引用

c.__dict__

{'other': ,'name': '1'}

所以,即使手动调用了 a = None,b = None,c = None,对象也不会被删除

Garbage:[,

,

,

{'name': 'one','other': },

{'name': 'two','other': },

{'name': 'three','other': }]

而弱引用是指“引用一个对象,但并不增加被引用对象的指针计数”

可以通过c = weekref.ref(k,func)

来指定引用的对象及对象删除后的动作func

调用时,使用c() 来引用k

但是在上个例子里面,我们需要一个“代理对象”来代理这个被引用的对象,从而使set_next 函数对于变量other可以同正常变量一样使用

# @param python 图 自身遍历及弱引用使用

# @author 编程之家 jb51.cc|jb51.cc

def set_next(self,other):

if other is not None:

if self in other.all_nodes():

other = weakref.proxy(other)

super(WeakGraph,self).set_next(other)

return

# End www.jb51.cc

从而避免了通过other()来引用一个other对象~

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

python字典弱引用_python 自身遍历及弱引用的简单示例相关推荐

  1. python定时执行脚本_Python实现定时执行任务的三种方式简单示例

    本文实例讲述了Python实现定时执行任务的三种方式.分享给大家供大家参考,具体如下: 1.定时任务代码 #!/user/bin/env python # @Time :2018/6/7 16:31 ...

  2. python字典操作添加_Python字典常见操作实例小结【定义、添加、删除、遍历】

    本文实例总结了python字典常见操作.分享给大家供大家参考,具体如下: 简单的字典: 字典就是键值对key-value组合. #字典 键值对组合 alien_0 ={'color':'green', ...

  3. python字典get计数_Python内部是如何存储GC引用变量的计数的?

    这段时间一直在想一个问题,为什么Python有了GIL依然还要对变量加锁.Google的过程中查看一些东西,有了新的困惑. 一个说法说Python内部保存了一个用户空间和一个内核空间.用户空间通常就是 ...

  4. python字典删除元素_Python简单遍历字典及删除元素的方法

    本文实例讲述了Python简单遍历字典及删除元素的方法.分享给大家供大家参考,具体如下: 这种方式是一定有问题的: d = {'a':1, 'b':2, 'c':3} for key in d: d. ...

  5. python字典数据类型笔记_Python学习笔记整理(六)Python中的字典

    一.字典介绍 字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型.列表是有序的对象结合,字典是无序的对象集合.两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通 ...

  6. python字典{:4}_Python字典101:详细的视觉介绍

    python字典{:>4} 欢迎 (Welcome) In this article, you will learn how to work with Python dictionaries, ...

  7. python字典程序题_python字典练习题

    python字典练习题 写代码:有如下字典 按照要求实现每一个功能 dict = {"k1":"v1","k2":"v2" ...

  8. python字典的用法_Python字典的用法详解(附示例)

    本篇文章给大家带来的内容是关于Python字典的用法详解(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 字典的表现形式为:{key:value},键和值之间用冒号分隔,每个 ...

  9. python字典求平均值_Python - 字典中各个键的每个值的均值

    我在跨整个字典进行迭代时遇到问题,无法对键的值中的每个元素进行简单的汇总统计(平均值).Python - 字典中各个键的每个值的均值 我的字典由那些号码清单键和值: test_dict={'NJ':[ ...

最新文章

  1. CVPR 2021 | 任何人都能“不讲武德”,姿态可控的语音驱动说话人脸
  2. if...else 小练习
  3. c语言中如何表示矩阵的乘法,c语言矩阵相乘
  4. C51 特殊功能寄存器英文全称
  5. JavaScript函数绑定
  6. IT项目管理工具探讨之_项目群管理
  7. android折叠listview,android – 如何在listview中展开和折叠项目
  8. Texture block combine command 纹理块合并命令
  9. 跨境电商热之下推ShopExpress,微盟靠什么出海寻新增量?
  10. 短视频SDK:视频编辑SDK,AE模版SDK,绿幕抠图SDK,AI人像分割SDK,VLOG模版SDK
  11. 深度学习 | 误差反向传播法
  12. 交换机的工作原理和功能
  13. 关于购物网站的设计概念
  14. 基于springboot的在线商城管理系统
  15. 在Linux下使用程序实现ls -l 的功能
  16. 文件服务器迁移方法,文件服务器迁移工具
  17. 富养还是穷养,决定孩子的一生
  18. 做自媒体去哪里找游戏视频素材剪辑?
  19. O2O、C2C、B2B、B2C、C2B的区别
  20. 计算机图形学-颜色科学基础

热门文章

  1. 实施和开发哪个前景好_「深圳app开发」app模板开发和app定制开发哪个好呢?
  2. matlab 结构(struct)数组,matlab 结构(struct)数组
  3. 苹果手机收不到推送信息_[赞助信息]拜仁签约新赞助商 球员将被禁用苹果手机...
  4. Leetcode每日一题:136.single-number(只出现一次的数字)
  5. 机器学习实战(八)分类回归树CART(Classification And Regression Tree)
  6. 蓝桥杯 卡片换位(bfs)
  7. 让Netty入门变得简单
  8. Android NDK开发: 通过C/C++调用第三方so库
  9. 第二:Pycharm设置配置(非常详细)
  10. jenkins手把手教你从入门到放弃03-安装Jenkins时web界面出现该jenkins实例似乎已离线