淘先锋技术网

首页 1 2 3 4 5 6 7

Python闭包(Closure)是指封装并返回函数的一个函数。闭包可以让一个函数访问到它所在外部代码块中的变量及函数,并持有对外部代码块的状态。它可以优雅地解决一些问题,也可以使程序更加简洁。

闭包的使用场景比较广泛,比如:

def counter(start=0):
count = [start]
def incr():
count[0] += 1
return count[0]
return incr
c = counter(5)
print(c())  # 6
print(c())  # 7

上面的代码实现了一个计数器,闭包函数incr()持有外部代码块的状态count,每次调用该函数都会使count自增1。而counter()则返回了这个函数,使得我们可以在外部轻松调用。

除了计数器,闭包还可以用于实现面向对象编程的方式。例如:

def make_person(name):
def get_name():
return name
def set_name(new_name):
nonlocal name
name = new_name
return {"get_name": get_name, "set_name": set_name}
p = make_person("Alice")
print(p["get_name"]())  # "Alice"
p["set_name"]("Bob")
print(p["get_name"]())  # "Bob"

上面的代码实现了一个简单的人类对象,get_name()和set_name()方法是对象的接口。我们通过闭包使得这两个方法可以访问到外部变量name,并且可以对其进行修改。

总之,Python闭包是一种非常优秀的编程技巧,它能够让我们在编写代码时更加灵活、简洁,同时也让我们拥有了面向对象编程的部分特性。