一.闭包函数:
闭包函数:
闭:定义在函数内部的函数
包:内部的函数引用了外部函数作用域的名(变量名)
闭包也是一种传参方式
def outter(x,y):
# x = 1
# y = 2
def my_max():
if x > y:
return x
return y
return my_max
res = outter(1,2) # outter加()本身会得到一个返回值my_max,实参1和2相当于变量值传给了x和y两个变量名
print(res())

import requests # 爬虫模块
#方式一 直接给函数传参
info1 = 'https://www.baidu.com'
info2 = '......'
def my_get(rul):
resuit = requests.get(rul)
if resuit.status_code == 200:
print(len(resuit.text))
my_get(info1)
my_get(info2)
'.....'
#方式二 用闭包的方式给函数传参
def outter(func):
# func = 'https://www.jd.com'
def my_get(func):
resuit = requests.get(func)
if resuit.status_code == 200:
print(len(resuit.text))
return my_get
res_jd = outter( 'https://www.jd.com') # res = my_get
res_jd() # my_get()
二.装饰器:
装饰器
器:就是一个工具
装饰:给被装饰对象(函数)添加功能
开放封闭原则:
开放:对扩展开放
封闭:对修改封闭
装饰器(被调用对象)必须遵循的两大原则:
1.不改变装饰对象(被装饰函数)的源码
2.不改变被装饰对象的调用方式
![]()
import time
print(time.time())
# 1562812014.731474 时间戳 当前时间距离1970-1-1 00:00:00相差的秒数
# 1970-1-1 00:00:00是Unix诞生元年
time.sleep(3) # 让cpu谁三秒 让你的程序暂停三秒
print('FBI!')
time 模块