#一 大前提:
# 闭包函数=名称空间函数与作用域+函数嵌套+函数对象
# 核心点:名字的查找关系是以函数定义阶段为准的
#二 什么是闭包函数
# '闭' 函数指的是该函数是内嵌函数
# '包' 函数指的是该函数包含对外层函数作用域名字的引用(不是对全局作用域)
#闭包函数:名称空间与作用域的应用+函数嵌套
# def f1():
# x=33333
# def f2():
# print(x)
# f2()
#
# x=1111
# def bar():
# x=4444
# f1()
#
# def foo():
# x=22222
# f1()
# foo()
#闭包函数:函数对象
#
# def f1():
# x=33333
# def f2():
# print('函数f2执行====>>>',x)
# return f2 #返回f2的内存地址
#
# f=f1()
# # print(f)
# #
# # x=444
# # f()
#
# def foo():
# f() #调的是f2
#
# foo()
#三 为何要有闭包函数==>闭包函数的应用
#两种为函数体传参的方式:
#方式一:直接把函数体需要的参数定义成形参
# def f2(x):
# print(x)
# f2(1)
#
#方式二:
def f1(x):
# x=3
def f2():
print(x)
return f2
x=f1(1)
print(x) #输出f2 的内存地址
x()
# import requests
#
#
# #传参的方案一:
# # def get(url):
# # #https://baidu.com
# # response=requests.get(url)
# # print(len(response.text))
# # # requests.get('https://cnblogs.com/linhaifeng')
# # # print(response.text)
# # get('https://baidu.com')
# # get('https://cnblogs.com/linhaifeng')
#
#
# #传参的方案二:
#
# def outter(url):
# # url='https://baidu.com'
# def get():
# reponse=requests.get(url)
# print(len(reponse.text))
#
# return get
#
# baidu=outter('https://baidu.com')
# baidu()