python调用数据返回字典dict数据的现象2
2024-10-11 05:25:42
python调用数据返回字典dict数据的现象2
思考:
话题1连接:https://www.cnblogs.com/zwgbk/p/10248479.html
在打印和添加时候加上内存地址id(),可以查看结果。可以得出结论:
1、在make()函数里,生成数据的两种不同赋值方式。
1.1第一种情况,是在一个内存地址生成了一个空的字典。随后每次调用数据时候改变这个内存地址的里的数据。
1.2第二种情况,是在每次调用数据的时候,都生成不同内存地址的字典。
2、添加进list后,并不是把数据直接保存在list里,而是把内存地址和相应的方法保存起来。在需要使用的时候才逐一生成。包括 '内存地址:%d' % id(val)
说明:
第一种情况键入代码:
def make():
dict = {
'a': None
}
for a in range(3):
dict['a'] = a
yield dict list = []
for val in make():
print('添加前字典{},内存地址:{}'.format(val,id(val)))
list.append((val,'内存地址:%d' % id(val)))
print('添加前字典{},内存地址:{}'.format(val,id(val))) print(list)得到结果:
添加前字典{'a': 0},内存地址:110911992
添加前字典{'a': 0},内存地址:110911992
添加前字典{'a': 1},内存地址:110911992
添加前字典{'a': 1},内存地址:110911992
添加前字典{'a': 2},内存地址:110911992
添加前字典{'a': 2},内存地址:110911992
[({'a': 2}, '内存地址:110911992'), ({'a': 2}, '内存地址:110911992'), ({'a': 2}, '内存地址:110911992')]
说明:
第二种情况键入代码:
def make():
for a in range(3):
dict = {
'a': a
}
yield dict list = []
for val in make():
print('添加前字典{},内存地址:{}'.format(val,id(val)))
list.append((val,'内存地址:%d' % id(val)))
print('添加前字典{},内存地址:{}'.format(val,id(val))) print(list)得到结果:
添加前字典{'a': 0},内存地址:113784728
添加前字典{'a': 0},内存地址:113784728
添加前字典{'a': 1},内存地址:110699936
添加前字典{'a': 1},内存地址:110699936
添加前字典{'a': 2},内存地址:110699144
添加前字典{'a': 2},内存地址:110699144
[({'a': 0}, '内存地址:113784728'), ({'a': 1}, '内存地址:110699936'), ({'a': 2}, '内存地址:110699144')]
最新文章
- php-resque的设计和使用
- js参数传递分析
- [ACM_动态规划] Alignment (将军排队)
- 【译】Java中的对象序列化
- btrace拓展工具-java应用性能诊断优化利器
- C# 之 后台加载图片Image
- Android进阶2之PopupWindow弹窗(有点悬浮窗的感觉)
- MVC4过滤器(转)
- zoj1025 Wooden Sticks
- xml publisher根据条件显示或隐藏列
- 洞见世界(1): 拉勾网大数据告诉你, 会计最高月薪达33k!
- Factory Method (工厂模式)
- Java(五、类和对象中的例题)
- 3.python词云图的生成
- c/c++ 多线程 等待一次性事件 future概念
- 利用PowerShell监控Win-Server性能
- python + Jquery,抓取西东网上的Java教程资源网址
- ubuntu 增加一个用户 并赋予权限
- PAT A1155 Heap Paths (30 分)——完全二叉树,层序遍历,特定dfs遍历
- QT 遇到的问题