Python基础进阶之闭包

it2023-01-14  59

一 闭包是什么东西

如果在一个函数中,定义了另外一个函数,并且那个函数使用了外面函数的变量,并且外面那个函数返回了里面这个函数的引用,那么称为里面的这个函数为闭包。例如:

def greet(name): def say_hello(): print('hello my name is %s' % name) return say_hello

二 用闭包完成一个计算器

def calculator(option): operator = None if option == 1: def add(x,y): return x+y operator = add elif option == 2: def minus(x,y): return x-y operator = minus elif option == 3: def multiply(x,y): return x*y operator = multiply else: def divide(x,y): return x/y operator = divide return operator cal = calculator(1) ret = cal(1,2) print(ret)

三 nonlocal关键字

如果想要在闭包中修改外面函数的变量,这时候应该使用nonlocal关键字,来把这个变量标识为外面函数的变量: 以下代码修改了name,但没有使用nonlocal关键字,会报错:

def greet(name): def say_hello(): name += 'hello' print('hello my name is %s' % name) return say_hello

以下代码修改了name,使用了nonlocal关键字,不会报错:

def greet(name): def say_hello(): nonlocal name name += 'hello' print('hello my name is %s' % name) return say_hello

四 使用闭包实现y=x+1和y=2x+2两个算式的值

def Y(x): print("y=x+1") def y(x): return x+1 def YY(x): def yy(x): return 2*x+1
最新回复(0)