`
三月沙
  • 浏览: 619496 次
  • 性别: 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对象和类习题及答案--中文

    在 Python 中,我们可以在记忆中创建一个对象,并调用构造函数来初始化其属性。例如,使用类 Person,我们可以在记忆中创建一个对象 John,并初始化其姓名和年龄。 私有变量 在 Python 中,我们可以使用双下划线 ...

    基于Python对象引用、可变性和垃圾回收详解

    对象引用是指一个变量指向内存中某个对象的位置,而不是存储对象的值。在Python中,当你创建一个变量并赋值时,实际上是创建了一个对象并让变量引用它。例如,`a = [1, 2, 3]` 创建了一个列表对象,然后`b = a` 使得...

    2014年度辛星python面向对象教程

    多态是指允许使用子类类型的指针或引用来指向子类或父类的对象,调用同一个接口(方法)会有不同的行为。在Python中,多态性意味着可以对不同类的对象使用相同的方法调用,根据对象的具体类型来执行相应的方法。 在...

    python引用和对象理解.pdf

    在上述例子中,我们创建了一个列表对象`L1`,然后将`L1`赋值给了`L2`。尽管我们修改了`L1`的内容,`L2`所引用的内存地址没有改变,因此`L2`的内容也会随之改变。 在实际编程中,理解Python的引用和对象概念对于写出...

    Python-become使一个对象变成另一个

    标题 "Python-become使一个对象变成另一个" 暗示我们正在探讨的是Python编程中一个特殊的概念或技术,可能是关于对象转换或者类的继承。在Python中,对象间的转换通常是通过继承、多态或者对象赋值来实现的。让我们...

    Python中的面向对象(课件)

    `self`参数是一个指向对象本身的引用,在方法内部可以访问对象的属性。 3. **类中的变量**: - 类变量是属于类而非单个实例的变量,所有实例都可以访问。而实例变量是属于每个对象自己的,它们存储对象的特定状态...

    python面向对象下载

    在这个例子中,`Dog`是一个类,`__init__`方法用于初始化新创建的对象,`bark`是对象的一个行为。通过`self`参数,我们可以访问对象的属性和方法。 创建类的实例(即对象)是通过调用类名来实现的: ```python my_...

    Python可变对象与不可变对象

    在不可变对象和可变对象之间进行赋值时,需要注意的是,对于可变对象,赋值不会创建新的对象,而是让新的变量引用同一个对象。比如: ```python a = [1, 2, 3] b = a b[0] = 4 print(a) # 输出 [4, 2, 3] ``` 在...

    python-引用传参.docx

    尽管Python参数传递仍然采用引用传递,但因为不可变对象的值不能改变,所以在函数内部尝试修改这些对象会创建一个新的对象。例如: ```python def change_num(num): num += 1 my_num = 1 change_num(my_num) ...

    Python面向对象编程.pptx

    在这个例子中,`modify_list`函数接收一个列表作为参数,并向其中添加一个元素。由于列表是可变类型,因此在函数外部也能看到这个变化。 #### 四、函数参数类型 Python中的函数支持多种参数类型,包括: 1. **...

    python面向对象

    - **类对象**:当定义一个类后,该类即成为一个类对象,可以被引用或实例化。 - **实例对象**:通过类对象实例化产生的具体对象。 - **属性**:类或对象的数据成员。 - **函数**:独立定义的行为,通常不与特定对象...

    python面向对象presentation——PPT(含源码).rar

    这份“python面向对象presentation——PPT(含源码)”是为学习者提供了一个深入理解面向对象编程的资源,适合学生用于presentation或自我学习。 1. **面向对象编程基础** - 类(Class):类是创建对象的模板,...

    python引用DLL文件的方法

    在上面的例子中,`test`函数需要两个参数:一个指向缓冲区的指针和该缓冲区的长度。因此,在调用之前,需要先获取Python字符串的指针和长度。 1. **方法一:手动转换** ```python sBuf = '...

    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基础05_python面向对象

    `self`参数是类内部方法的默认第一个参数,用来引用当前对象实例。 实例化对象是通过类创建具体对象的过程,例如: ```python object_instance = ClassName(value1, value2) ``` 在这个例子中,`object_instance`...

    深入源码解析Python中的对象与类型

    #### Python对象的实现 ##### 对象基础 在Python中,一切皆对象,包括数字、字符串、函数等。Python中对象分为两类:定长对象(如整数`int`)和非定长对象(如列表`list`和字典`dict`)。这些对象的内部表示通过`...

    faif python-patterns 使用Python实现一些设计模式的例子

    本资源“faif python-patterns”是针对Python编程语言的一个项目,其中包含了多种设计模式的实现示例。下面,我们将深入探讨这些设计模式及其在Python中的应用。 1. **单例模式(Singleton)**: 单例模式确保一个...

    Python-一种特殊的ModelAdmin允许它嵌套在另一个ModelAdmin中

    当我们谈论"Python-一种特殊的ModelAdmin允许它嵌套在另一个ModelAdmin中"时,这涉及到Django的ModelAdmin特性以及如何通过自定义扩展来实现模型管理器的嵌套结构。 ModelAdmin是Django Admin界面的核心部分,它...

    python程序员的基本素养--你从没见过的Python变量引用(csdn)————程序.pdf

    这种情况下,Python内部有一个称为引用计数的机制来跟踪对象被多少个变量引用,以便在适当的时候释放内存。 改变变量的值,如`a = 123456`,并不会修改原来"hello,world"的内存空间,而是创建了一个新的整数对象...

    python-弱引用(csdn)————程序.pdf

    Python中的弱引用是一种特殊类型的引用,它不计入对象的引用计数,因此不会阻止垃圾回收器对...通过合理使用弱引用,开发者可以在保持对象引用的同时,允许垃圾回收器在必要时回收这些对象,从而维护良好的内存管理。

Global site tag (gtag.js) - Google Analytics