文件的:
with open 的操作的不能直接在内部return,否则没办法关闭文件(循环传输),最好在with open结束后再使用return
f open 的文件操作在最近的使用会比较多,在自己关闭文件后renturn
从文件提取的数据,最后的可能会带 ,注意.
网络编程:
需要知道:同步(串行),异步(并行),有时候一些理论和现实生活中的字面理解不太一样
函数中的迟邦定,关于闭包的:相对而言的局部变量绑定的是值,非局部变量绑定的是空间
看例子:
# def create_multipliers(): # return [lambda x : i * x for i in range(5)] # for multiplier in create_multipliers(): # print(multiplier(2))
等价于:
def create_multipliers(): multipliers = [] for i in range(5): def multiplier(x): return i * x multipliers.append(multiplier)
解决方案:
def create_multipliers():
return [lambda x, i=i : i * x for i in range(5)]
或者,您可以使用 functools.partial 函数: from functools import partial from operator import mul def create_multipliers(): return [partial(mul, i) for i in range(5)]
什么情况下陷阱不是陷阱
有时您就想要闭包有如此表现,迟绑定在很多情况下是不错的。不幸的是,循环创建 独特的函数是一种会使它们出差错的情况。