python 易错总结

文件的:

  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)]

什么情况下陷阱不是陷阱

有时您就想要闭包有如此表现,迟绑定在很多情况下是不错的。不幸的是,循环创建 独特的函数是一种会使它们出差错的情况。

  

  

原文地址:https://www.cnblogs.com/lnrick/p/9368563.html