# 闭包
'''
如果在一个函数中,定义了另外一个函数,并且那个函数使用了外面函数的变量,
并且外面那个函数返回了里面这个函数的引用,那么称里面的函数为闭包
'''
def greet(name):
def say_hello():
return "Hello,%s" % name
return say_hello
print greet('Sam')()
#coding:utf-8
def calculator(operator):
if operator ==1:
def add(x,y):
return x+y
return add
elif operator == 2:
def minus(x,y):
return x-y
return minus
elif operator ==3:
def multiply(x,y):
return x*y
return multiply
elif operator ==4:
def divide(x,y):
return x/y
return divide
else:
print('操作符错误')
add=calculator(1)
minus = calculator(2)
multiply = calculator(3)
divide = calculator(4)
print add(2,4),minus(2,4),multiply(2,4),divide(2,4)
# /usr/bin/python
#-*- coding:utf-8 -*-
def greet(name):
print('outter name is %s' % name)
def say_hello():
# 如果要修改外面函数的变量,使用nonlocal关键字
nonlocal name
name +=" best"
print('inner name is %s' % name)
return say_hello
ret=greet('sam')
ret()