python-turtle-tutorial
  • 前言
  • 1 预备知识
    • 1.1 计算机程序
      • 1.1.1 计算机程序有什么用
      • 1.1.2 编程语言
      • 1.1.3 机器语言、汇编语言、高级语言
    • 1.2 计算机如何工作
      • 1.2.1 CPU、存储设备
      • 1.2.2 外部设备
      • 1.2.3 编译与解释
    • 1.3 软件和工具
  • 2 Python编程
    • 2.1 类、方法、调用:前进与转弯
      • 2.1.1 模块
      • 2.1.2 对象
      • 2.1.3 方法、函数
      • 2.1.4 Python:一切皆对象
      • 2.1.5 一些有用的工具
    • 2.2 运算符、while循环:多边形
      • 2.2.1 数
      • 2.2.2 条件与循环
      • 2.2.3 关键字
      • 2.2.4 定义函数
    • 2.3 数据结构:小海龟赛跑
      • 2.3.1 Python基本数据结构
      • 2.3.2 迭代器
      • 2.3.3 表达式
      • 2.3.4 关键字参数
      • 2.3.5 复杂度
    • 2.4 定义类:迷宫
      • 2.4.1 定义
      • 2.4.2 名称空间
      • 2.4.3 装饰器
      • 2.4.4 类方法
      • 2.4.5 对象的创建和类的创建
    • 2.5 总结
      • 2.5.1 再谈Python对象
      • 2.5.2 再谈循环
      • 2.5.3 异常
      • 2.5.4 代码风格
      • 2.5.5 再看Python的运行过程
      • 2.5.6 函数式编程
      • 2.5.7 一些实用的Python库
Powered by GitBook
On this page
  1. 2 Python编程
  2. 2.5 总结

2.5.1 再谈Python对象

Previous2.5 总结Next2.5.2 再谈循环

Last updated 7 years ago

Learning By Reading 难度:★ 重要性:★★★★★

  • 观察结果,思考原因。

a = [1, 2]
b = a
b += [3]
print(a)
  • 不知道为什么?看。

Learning By Thinking 难度:★ 重要性:★★★★★

  • 观察结果,思考原因。

a = [1, 2]
b = a
b = b + [3]
print(a)
  • 将程序稍微改写一下或许大家就能看出原因来。b += [3]等价于b.__iadd__([3]),

    b = b + [3]等价于b = b.__add__([3])。

    __iadd__改变了对象b(也就改变了a),__add__创造了一个新的对象。

  • 试着用上文中画图的形式解释一下这段程序为什么会出现这样的结果。

Learning By Reading 难度:★ 重要性:★★★★★

  • 观察结果,思考原因。

a = 2
b = a
b += 1
print(a)
  • int对象没有__iadd__方法,在+=的时候,Python会先查看对象有没有__iadd__方法,

    没有的话,就改用__add__。

又和想象的不一样?看。

这里
这里