码迷,mamicode.com
首页 > 其他好文 > 详细

闭包函数

时间:2018-09-26 17:12:49      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:turn   out   解决   com   www   问题   https   def   包含   

闭包函数:

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

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

闭包函数的基本形式:

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

 

闭包函数

标签:turn   out   解决   com   www   问题   https   def   包含   

原文地址:https://www.cnblogs.com/msj513/p/9707570.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!