上下文管理器 读写文件时,如果一个文件被打开,且未被正常关闭,可能会出现一些意想不到的结果。 Python 提供了上下文管理器的机制来解决这个问题,它通常与关键字 with 一起使用。对于上面的例子,用 with 语句调用的方式为: with <expression>: <statements> with open ('my_file', 'w'…
装饰器 基础用法 以函数作为参数,并且返回一个新函数的函数是一个装饰器: def dec (f): print (f'I am decorating function {f.__name__}') return f dec (len) I am decorating function len 装饰器可以在函数定义时用 @调用: @dec def add (x, y): return x …
迭代器与生成器 迭代器 可迭代对象可以在 for 循环中使用: x = [2, 4, 6] for n in x: print (n) 2 4 6 之所以可以被 for 循环迭代,是因为这些对象拥有一个迭代器,可以用.__iter__() 方法获得: x.__iter__() 一个迭代器需要满足两个条件: .__iter__() 方法返回自身 .__next__() 方法返回下一个迭代值,当迭代完成后,抛出一…
函数进阶 函数的参数传递 Python 的函数采用了引用传递的方法,即传递参数时,并不复制一份参数的内容,而是将参数的引用传递给函数。 例如: def f (x): return id (x) a = 1.2 id (a) 4485901776 f (a) 4485901776 函数 f (a) 的返回值与 a 的内存地址是一致的。这表示,当函数 f () 被调用时,Python 并没有将 a 的值复制一份传给参数 x,而是让参数…