闭包函数

闭包函数:

闭:指的是函数定义在一个函数内部的函数

包:该内部函数包含对外层函数名称的引用

闭包函数的基本形式:

def outter():#外层函数包裹内层函数
    x=1#使用函数的作用域的概念
    def inner():#函数的嵌套定义
        print('from inner',x)#函数的名称和作用域
    return inner#可以在全局使用内层函数

调用方式

f= outter()#返回inner的内存地址
f()#通过内存地址调用函数
f()

函数两种传值的方式

方式一:直接通过函数的的参数形式来传值

def foo(name):
    print('hello %s' %name)

foo('egon')
foo('egon')
foo('egon')

方式二通过闭包方式的方式来传值

def outter(name):#通过参数传值使得函数局部名称空间获得相关名称
    # name='egon'
    def foo():
        print('hello %s' %name)
    return foo

 

 

实例:

# 问题
# def get():
#     response=requests.get(url)
#     if response.status_code == 200:
#         print(response.text)

解决方案一:

def get(url):
    response=requests.get(url)
    if response.status_code == 200:
        print(response.text)

get('https://www.baidu.com')#调用方式复杂
get('https://www.baidu.com')
get('https://www.baidu.com')

解决方案二:

def outter(url):
    # url='https://www.baidu.com'
    def get():
        response=requests.get(url)
        if response.status_code == 200:
            print(response.text)
    return get

baidu=outter('https://www.baidu.com')#定义方式相对复杂
cnblogs=outter('https://www.cnblogs.com')
baidu()#重用效率比较高,再次调用方便
baidu()
cnblogs()
cnblogs()

 

posted @ 2018-09-26 16:10  msjaxuexi  阅读(164)  评论(0编辑  收藏  举报