闭包

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

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()

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值