Python基础之生成器
Python生成器介绍
总结Go语言学习之路,提供免费的Go语言学习教程,希望与大家一起学习进步。
Python生成器介绍
迭代器是Python中一个很基础很重要的知识点,迭代器相关知识点也是Python程序员的必须要掌握的。
Python中的lambda、map、filter、reduce、zip用法介绍。
讲装饰器之前,先来说一下闭包。
首先我们需要知道,我们是可以在函数中再定义一个函数的(嵌套函数)。
就像这样:
def foo():
def bar():
print("Hello world!")
return bar
此时我们调用 foo
函数,会得到一个其内部定义的 bar
函数。我们把 foo
函数的返回值赋值给一个变量就可以使用这个变量来调用 bar
函数了。
就像这样:
func = foo() # func <- bar
func() # bar()
输出:
Hello world!
好了,闭包的故事就发生在上面这样的嵌套函数中。
举个例子:
def foo():
name = "Andy" # 定义了一个foo函数内部的局部变量
def bar():
print(name) # 在bar函数内部引用了其外部函数foo的局部变量name
return bar
现在,我们来调用一下 foo
函数:
func = foo()
func()
上面的代码,输出结果是:
Andy
bar函数不需要传参数,就能获取到外面的变量。
这就是典型的一个闭包现象。
函数内部定义的函数,称为内部函数。如果这个内部函数使用了它外部函数的局部变量,即使外部函数返回了,这个内部函数还可以访问到外部函数的局部变量,这种现象就叫做闭包
。
注意,即使你在调用 func
之前,定义一个全局变量 name
,它还是会使用原来foo
函数内部的 name
:
func = foo()
name = "Egon"
func()
输出:
Andy
此时调用 func
函数时它会使用自己定义阶段引用的外部函数的局部变量 name
,而不使用调用阶段的全局变量。
本文介绍Python中的函数语法及常用方法。
本文介绍了Python中的常用内置函数及用法。