语法

整型

-5到256
id()函数返回是一致的

默认参数必须是不变对象

  1. def foo(v, l=[]):
  2. l.append(v)
  3. print(id(l))
  4. print(l)
  5. foo(1)
  6. foo(2)
  7. foo(3)
  8. #输出
  9. 4537323400
  10. [1]
  11. 4537323400
  12. [1, 2]
  13. 4537323400
  14. [1, 2, 3]
  15. def foo(v, l=None):
  16. if not l:
  17. l = []
  18. l.append(v)
  19. print(id(l))
  20. print(l)
  21. foo(1)
  22. foo(2)
  23. foo(3)
  24. #输出
  25. 4451487624
  26. [1]
  27. 4451487624
  28. [2]
  29. 4451487624
  30. [3]

循环引用

Py3.4及以后处理循环引用问题。
在 3.4 版更改: 根据 PEP 442 ,带有 del() 方法的对象最终不再会进入 gc.garbage

  1. class Data:
  2. def __del__(self):
  3. print('Data.__del__')
  4. class Node:
  5. def __init__(self):
  6. self.data = Data()
  7. self.parent = None
  8. self.children = []
  9. def add_child(self, child):
  10. self.children.append(child)
  11. child.parent = self
  12. a = Node()
  13. a.add_child(Node())
  14. del a

type和isinstance

  1. class A:
  2. pass
  3. class B(A):
  4. pass
  5. isinstance(A(), A) # returns True
  6. type(A()) == A # returns True
  7. isinstance(B(), A) # returns True
  8. type(B()) == A # returns False

运行脚本

-m和不加的区别

两种执行方法的sys.path不同(注意每个path输出中的第一条),Python中的sys.path是Python用来搜索包和模块的路径。通过python -m执行一个脚本时会将当前路径加入到系统路径中,而使用python xxx.py执行脚本则会将脚本所在文件夹加入到系统路径中(如果取消inner.py中的注释会报找不到模块的错误)

文档

https://www.crummy.com/software/BeautifulSoup/bs4/doc/
https://requests.kennethreitz.org/en/master/