语法
整型
默认参数必须是不变对象
def foo(v, l=[]):l.append(v)print(id(l))print(l)foo(1)foo(2)foo(3)#输出4537323400[1]4537323400[1, 2]4537323400[1, 2, 3]def foo(v, l=None):if not l:l = []l.append(v)print(id(l))print(l)foo(1)foo(2)foo(3)#输出4451487624[1]4451487624[2]4451487624[3]
循环引用
Py3.4及以后处理循环引用问题。
在 3.4 版更改: 根据 PEP 442 ,带有 del() 方法的对象最终不再会进入 gc.garbage 。
class Data:def __del__(self):print('Data.__del__')class Node:def __init__(self):self.data = Data()self.parent = Noneself.children = []def add_child(self, child):self.children.append(child)child.parent = selfa = Node()a.add_child(Node())del a
type和isinstance
class A:passclass B(A):passisinstance(A(), A) # returns Truetype(A()) == A # returns Trueisinstance(B(), A) # returns Truetype(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/
