`
三月沙
  • 浏览: 618057 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

python对象引用的一个经典例子

阅读更多

 

number_list = []

tmp={}

for i in range(3):
    number = random.randint(10,20)
    if number:
        tmp['num']=number
        print 'number is ',tmp['num']
        print 'tmp id is',id(tmp)
        number_list.append(tmp)


print number_list

 

 

   以上代码的一次测试输出是:

 

 

number is  15
tmp id is 167069052
number is  12
tmp id is 167069052
number is  15
tmp id is 167069052
[{'num': 15}, {'num': 15}, {'num': 15}]

 

 

   随机产生的三个数,结果是不一样的,但是最后防到list中的数字全是15.

 

   由于tmp事先已经声明了,所以是新建了一个python字典对象

 

   每次在for 中对该字典对象中的tmp['num'] 做修改,改变的是改字典的num键,即每次更改的是同一个tmp字典,

 

   所以每次放进list中的对象其实是统一个,他们都指向一开始就声明的地址 167069052,所以最后list中的三个字典其实

 

   是统一个字典,它们的值也就是最后一次修改后的值,即15.

 

 

 

 

分享到:
评论

相关推荐

    python-引用传参.docx

    这是因为Python中的变量实际上是一个指向对象的引用,而不是对象本身。因此,当我们将一个变量作为参数传递给函数时,实际上是将这个变量所指向的对象的引用传递给了函数。 下面我们来看一个例子: ``` def change_...

    Python编程入门经典

    3.3.1 引用最后一个元素 40 3.3.2 序列的范围 41 3.3.3 通过附加序列增长列表 41 3.3.4 使用列表临时存储数据 42 3.3.5 处理集合 43 3.4 本章小结 44 3.5 习题 44 第Ⅱ部分 Python语言和标准库 第4章 做出决策 49 ...

    Python的对象传递与Copy函数使用详解

    1、对象引用的传值或者传引用 Python中的对象赋值实际上是简单的对象引用。也就是说,当你创建一个对象,然后把它赋值给另一个变量的时候,...先看一个数字传递的例子: >>> def test(a): ... print id(a) ... a = a +

    python中的对象拷贝示例 python引用传递

    这个例子就是一个引用传递的例子!目的是说明一下概念:引用传递的意思就是说你传递的是对象的引用,对这个引用的修改也会导致原有对象的改变。学过C/C++的朋友们都知道,在交换2个数的时候,如果自己实现一个swap...

    Python面向对象程序设计之类的定义与继承简单示例

    本文实例讲述了Python面向对象程序设计之类的定义与继承。分享给大家供大家参考,具体如下: ...在方法定义时作为第一个参数存在,self参数是类实例的引用。 2. __init__方法相当于构造函数,在获取类

    python面试题100.docx

    1 Python的函数参数传递 看两个如下例子,分析运行结果: 代码一: a = 1 def fun(a): a = 2 fun(a) print(a) # 1 代码二: a = [] def fun(a): a.append(1) fun(a) print(a) # [1] 所有的变量都可以理解是内存中一个...

    Python核心编程第二版

     2.19.2 如何访问一个模块函数或访问一个模块变量   2.20 实用的函数   2.21 练习   第3章 Python基础   3.1 语句和语法   3.1.1 注释(#)   3.1.2 继续(\)   3.1.3 多个语句构成代码组...

    Python参数传递对象的引用原理解析

    python采用的是传递对象的引用,为了方便说明,我们来看一个例子: test = [1] def change1(a): a = [2] def change2(a): a.append(3) change1(test) change2(test) print test 我们来看一下最后的输出: [1,3]...

    浅谈Python中的可变对象和不可变对象

    当改变某个变量时候,由于其所指的值不能被改变,相当于把原来的值复制一份后再改变,这会开辟一个新的地址,变量再指向这个新的地址。 可变对象,该对象所指向的内存中的值可以被改变。变量(准确的说是引用)改变...

    Python引用类型和值类型的区别与使用解析

    对象本身不允许修改,数值的修改实际上是让变量指向了一个新的对象 包含:字符串、元组、数值,本身不允许被修改 引用类型: 对象本身可以修改, 包含:列表、字典,本身允许修改 例子: a = 11 print id(a) a = 16...

    Python应用测试框架(整合WinAPI&WatiN;&Dll;反射&Linux;等)

    Scripts目录下含多个应用例子,窗体测试(WinAPI)、Web测试(WatiN)、WebAPI测试、LinuxSSH和SCP等。 3)命令行调用支持: IronPythonTest.exe -log logPath ;执行命令后输出日志全路径,默认Log/ -py filePath ;...

    Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)

    2. copy.deepcopy 深拷贝 拷贝对象及其子对象一个很好的例子: import copya = [1, 2, 3, 4, [‘a’, ‘b’]] #原始对象b = a #赋值,传对象的引用c = copy.copy(a) #对象拷贝,浅拷贝d = copy....

    Python核心编程第二版(ok)

     2.19.2 如何访问一个模块函数或访问一个模块变量   2.20 实用的函数   2.21 练习   第3章 Python基础   3.1 语句和语法   3.1.1 注释(#)   3.1.2 继续()   3.1.3 多个语句构成代码组...

    IronPython应用框架AutoPyTest(WinAPI/WatiN/SshScp/Dll插件反射等)

    本工具提供一个python和C#动态支持的框架(内置对象为Ipy_this): (a) Scripts目录下含多个应用例子,窗体测试(WinAPI)、Web测试(WatiN)、WebAPI测试、LinuxSSH和SCP等。 (b) 自动化测试、自动任务均可以通过...

    Python语言程序设计教程 北理工Python课程W081602-图形对象概念 共11页.pdf

    2-5-函数库的引用 3-1-Python中类型的概念 3-2-数字类型 3-3-字符串类型 3-4-字符串的操作 3-5-元组类型 3-6-列表类型及操作 3-7-math库和random库 3-8-π的计算 4-1-1-程序基本结构 4-1-2-简单分支 4-1-3-多分支 4-...

    【Python基础】面向对象基础和特性

    Python面向对象面向对象基础定义类创建对象添加和获取对象属性魔法方法对象的生命周期私有属性和私有方法面向对象特性封装封装案例演练继承继承的传递性方法的重写父类的私有属性和私有方法多继承新式类与经典类多态...

    IronPython应用框架(整合WinAPI/WatiN/SshScp/Dock/dll插件反射等)

    Scripts目录下含多个应用例子,窗体测试(WinAPI)、Web测试(WatiN)、WebAPI测试、LinuxSSH和SCP等。 3)命令行调用支持: IronPythonTest.exe -log logPath ;执行命令后输出日志全路径,默认Log/ -py filePath ;...

    Python深入学习之内存管理

    这里以Python语言为例子,说明一门动态类型的、面向对象的语言的内存管理方式。  对象的内存使用 赋值语句是语言最常见的功能了。但即使是最简单的赋值语句,也可以很有内涵。Python的赋值语句就很值得研究。 a =...

    Python深入06——python的内存管理详解

    这里以Python语言为例子,说明一门动态类型的、面向对象的语言的内存管理方式。 对象的内存使用 赋值语句是语言最常见的功能了。但即使是最简单的赋值语句,也可以很有内涵。Python的赋值语句就很值得研究。 a = 1 ...

Global site tag (gtag.js) - Google Analytics