:::info 注意: 贪多嚼不烂 :::

代码可视化网站

http://www.pythontutor.com/visualize.html#mode=edit
用梯子访问会快很多
举个例子:

  1. class Book(object):
  2. # 定义类的参数
  3. def __init__(self,book_id, book_name, book_store_count):
  4. self.book_id = book_id
  5. self.book_name = book_name
  6. self.book_store_count = book_store_count
  7. # 重写加法操作
  8. def __add__(self,book):
  9. return self.book_store_count + book.book_store_count
  10. # 创建两个 Book 类的实例:
  11. python_intro_book = Book(1,'python入门书',100)
  12. ml_intro_book = Book(2,'机器学习入门书',200)
  13. # 求两本书的总销量
  14. sales_cnt = python_intro_book + ml_intro_book
  15. print(sales_cnt) # 300

比如这个例子,我一直没看懂第9行的 self.book_store_count + book.book_store_count 是什么意思,直到看到了可视化图,才明白 self, book 是分别指 + 左边和右边的对象。

Python 资源 - 图1

再比如以下这张图,能清晰看出,主程序中的 lst 和函数中的 lst 指向了同一个对象,因此如果在函数中改变了 lst ,那么回到主程序中, lst 也会相应被改变。

Python 资源 - 图2

教程

首推廖雪峰,言简意赅,讨论区有不少精华解析
Python 官方中文文档