python字典弱引用_python 自身遍历及弱引用的简单示例
对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 自身遍历及弱引用的简单示例相关推荐
- python定时执行脚本_Python实现定时执行任务的三种方式简单示例
本文实例讲述了Python实现定时执行任务的三种方式.分享给大家供大家参考,具体如下: 1.定时任务代码 #!/user/bin/env python # @Time :2018/6/7 16:31 ...
- python字典操作添加_Python字典常见操作实例小结【定义、添加、删除、遍历】
本文实例总结了python字典常见操作.分享给大家供大家参考,具体如下: 简单的字典: 字典就是键值对key-value组合. #字典 键值对组合 alien_0 ={'color':'green', ...
- python字典get计数_Python内部是如何存储GC引用变量的计数的?
这段时间一直在想一个问题,为什么Python有了GIL依然还要对变量加锁.Google的过程中查看一些东西,有了新的困惑. 一个说法说Python内部保存了一个用户空间和一个内核空间.用户空间通常就是 ...
- python字典删除元素_Python简单遍历字典及删除元素的方法
本文实例讲述了Python简单遍历字典及删除元素的方法.分享给大家供大家参考,具体如下: 这种方式是一定有问题的: d = {'a':1, 'b':2, 'c':3} for key in d: d. ...
- python字典数据类型笔记_Python学习笔记整理(六)Python中的字典
一.字典介绍 字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型.列表是有序的对象结合,字典是无序的对象集合.两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通 ...
- python字典{:4}_Python字典101:详细的视觉介绍
python字典{:>4} 欢迎 (Welcome) In this article, you will learn how to work with Python dictionaries, ...
- python字典程序题_python字典练习题
python字典练习题 写代码:有如下字典 按照要求实现每一个功能 dict = {"k1":"v1","k2":"v2" ...
- python字典的用法_Python字典的用法详解(附示例)
本篇文章给大家带来的内容是关于Python字典的用法详解(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 字典的表现形式为:{key:value},键和值之间用冒号分隔,每个 ...
- python字典求平均值_Python - 字典中各个键的每个值的均值
我在跨整个字典进行迭代时遇到问题,无法对键的值中的每个元素进行简单的汇总统计(平均值).Python - 字典中各个键的每个值的均值 我的字典由那些号码清单键和值: test_dict={'NJ':[ ...
最新文章
- CVPR 2021 | 任何人都能“不讲武德”,姿态可控的语音驱动说话人脸
- if...else 小练习
- c语言中如何表示矩阵的乘法,c语言矩阵相乘
- C51 特殊功能寄存器英文全称
- JavaScript函数绑定
- IT项目管理工具探讨之_项目群管理
- android折叠listview,android – 如何在listview中展开和折叠项目
- Texture block combine command 纹理块合并命令
- 跨境电商热之下推ShopExpress,微盟靠什么出海寻新增量?
- 短视频SDK:视频编辑SDK,AE模版SDK,绿幕抠图SDK,AI人像分割SDK,VLOG模版SDK
- 深度学习 | 误差反向传播法
- 交换机的工作原理和功能
- 关于购物网站的设计概念
- 基于springboot的在线商城管理系统
- 在Linux下使用程序实现ls -l 的功能
- 文件服务器迁移方法,文件服务器迁移工具
- 富养还是穷养,决定孩子的一生
- 做自媒体去哪里找游戏视频素材剪辑?
- O2O、C2C、B2B、B2C、C2B的区别
- 计算机图形学-颜色科学基础
热门文章
- 实施和开发哪个前景好_「深圳app开发」app模板开发和app定制开发哪个好呢?
- matlab 结构(struct)数组,matlab 结构(struct)数组
- 苹果手机收不到推送信息_[赞助信息]拜仁签约新赞助商 球员将被禁用苹果手机...
- Leetcode每日一题:136.single-number(只出现一次的数字)
- 机器学习实战(八)分类回归树CART(Classification And Regression Tree)
- 蓝桥杯 卡片换位(bfs)
- 让Netty入门变得简单
- Android NDK开发: 通过C/C++调用第三方so库
- 第二:Pycharm设置配置(非常详细)
- jenkins手把手教你从入门到放弃03-安装Jenkins时web界面出现该jenkins实例似乎已离线