《Effective python》-第2章 函数
文章目录 15.如何在闭包里使用外围作用域中的变量 16.考虑使用生成器来改写直接返回列表的函数 17.在迭代器上面反复迭代会出错 20.用None和文档字符串来描述具有动态默认值的参数 21.用关键字参数确保代码清晰 15.如何在闭包里使用外围作用域中的变量 可参考文章: python的闭包问题 总结 :可使用nonlocal语句,改为辅助类,使用单元素列表或集合等获取外围作用域的变量。 def sort_priority ( values , group ) : # 外部作用域 """功能:把在group中的元素排在所有值的前面,若存在group范围内的值,found为True""" found = False def helper ( x ) : # 闭包 if x in group : found = True # 实际上并未修改上面的值 return ( 0 , x ) return ( 1 , x ) values . sort ( key = helper ) return found numbers = [ 8 , 3 , 1 , 2 , 5 , 4 , 7 , 6 ] group = { 2 , 3 , 5 , 7 } print ( sort_priority ( numbers , group ) ) # False print ( numbers ) #