首页 > 编程语言 >python_August(闭包、装饰器)

python_August(闭包、装饰器)

时间:2024-09-05 15:27:18浏览次数:11  
标签:闭包 return August python ## time print response def

目录

闭包函数

列如一个简单爬虫,这里的request需要从第三方库导入

# import requests	##pip install request
# response = requests.get('http://www.xiaohuar.com/')
# response.encoding = 'gb2312'	##解码方式
# data = response.text			###文本
# print(data)

##如果需要在抓或者更改网址就需要再写一遍
##如response = requests.get('http://www.xiaohuar.com/')
##如response = requests.get('http://www.baidu.com/')

使用一层包装的时候,写的稍微简洁一点了,但是还是要填同一个网址的时候重复填

import requests
def spider(url):
    response = requests.get(url)
    response.endcoding = 'gb2312'
    data = response.text
    return data
pa = spider('http://www.baidu.com/')#这里就用http就行https安全性能高,需要多次握手等,爬不出来东西
print(pa)	###可以爬出前端的一些信息

但是终极还是使用闭包,第二次使用就只需要一个f()就行

import requests
def wrapper(url):
    def spider():
        response = requests.get(url)
        response.endcoding = 'gb2312'
        data = response.text
        return data
    return spider

name = '第一次'
f = wrapper('https://www.baidu.com/')##要爬完整请改成http(不要那个s)
print(f(),f'/n**50')
print('*'*50,f"{name}")##自设计分隔符

import time
time.sleep(2)##设置时间间隔
name = '第二次'
print(f())
print('/'*50,f"{name}")##自设计分隔符

装饰器

装饰器:改变功能的时候不改变原来的调用方式,并且改变原来函数的代码

import time
### 这是一个时间验证模块
def time_count():
    start_time = time.time()##此刻时间
    time.sleep(2.4)
    end_time = time.time()##此刻时间
    timecc = (end_time - start_time)
    return timecc
##下面即为装饰器模板
def deco(func):
    def wrapper():
        res = func()
        return res
    return wrapper

f = deco(time_count)
print(f())

登录装饰器

userinfo_dict = {'nick': '123'}
is_login = False  # 定义成可变类型或者使用global

def login(func):
    def wrapper(*args, **kwargs):
        global is_login		###这里使用全局定义
        if not is_login:
            username = input('请输入你的用户名>>>').strip()
            pwd = input('请输入你的密码>>>').strip()
            if pwd == userinfo_dict.get(username):
                print('登陆成功')
                is_login = True
                res = func(*args, **kwargs)
                return res
            else:
                print('傻逼,来老子这里吃霸王餐')
        ###如果已经登录了再刷新使用程序就不用反复登录了
        else:
            res = func(*args, **kwargs)
            return res
    return wrapper

def func1():
    pass

login(func1)()

标签:闭包,return,August,python,##,time,print,response,def
From: https://www.cnblogs.com/yyds703/p/18398531

相关文章

  • 在Python中如何输入整数?
    Python中的整数是一种基本数据类型,用于表示不带小数点的数字。整数可以是正数、负数或零。而且在Python中,整数类型没有大小限制,可以表示任意大的整数,那么Python如何输入整数?以下是具体内容介绍。在Python中,有两种主要方法可以输入整数:使用input()函数input()函数......
  • Python 之面向对象
    __slots__限制类的绑定属性__str__:print打印对象,返回用户看到的字符串__repr__:返回程序开发者看到的字符串,如直接输入变量,是为调试服务的classStudent(object):def__str__(self):return'Studentobject(name:%s)'%self.nameprint(Student('hell0'))可以直......
  • Python如何对列表内的数字求和?
    Python列表是一种有序、可变的数据结构,可以包含不同类型的数据,如数字、字符串等。而在Python中,将列表中的数据求和是一个常见操作,那么如何对Python列表中的数字进行求和?我们通过这篇文章来介绍一下方法。Python中有几种方法可以对列表内的数字求和:1、使用内置函数......
  • 20240905_134536 python 填空题 列表
    20240905_144516python填空题字符串方法1_鲸鱼编程pyhui的技术博客_51CTO博客https://blog.51cto.com/u_13137233/1192782320240905_154516python填空题xxx20240905_164516python填空题xxx20240905_174516python填空题xxx20240905_184516python填空题xxx20240......
  • 20240905_144516 python 填空题 字符串方法1
    字符串s="hi",希望它占30个位置,居中,其它位置用!占位,结果用变量r记录r=s.center(30,"!")字符串s="abaac",需要统计s中有多少个a,把结果保存在变量i中i=s.count("a")有字符串s,需要把它转换为utf8的字节数据,把结果保存在变量b中b=s.encode()有字符串s,需要把它转换为gbk的字节......
  • Python 之pip换源
    Python修改pip源为国内源1.临时换源:#清华源pipinstallmarkdown-ihttps://pypi.tuna.tsinghua.edu.cn/simple#阿里源pipinstallmarkdown-ihttps://mirrors.aliyun.com/pypi/simple/#腾讯源pipinstallmarkdown-ihttp://mirrors.cloud.tencent.com/pypi/sim......
  • python最经典基础算法题-2
    题目006:斐波那契数列程序分析:斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。【思路】:很多种解法,我是按照分割的方式,每次取列表后两项,然后相加。l=[0,1]foriinrange(10):arr=l[-2:]l.append(arr[0]+arr[1])print(l)题目007:将一......
  • 【Python入门】教你安装2024最新的Python,最新版全面教程!!!
    2024安装Python的详细教程一、准备工作确定Python版本:访问Python官网(WelcometoPython.org),查看最新的稳定版本。在撰写本文时(2024年9月),Python3.x是当前的主要版本,其中3.10.x或3.11.x是较新的稳定版本。注意选择与你操作系统(Windows、macOS、Linux)相匹配的版本。下......
  • 【Python基础】学好Python的基本要求,就是了解Python的优点和缺点。看完你就知道了!!!
    Python作为一种广泛使用的高级编程语言,确实拥有许多优点,同时也存在一些缺点。以下是对Python优缺点的详细概述:优点简单易学:Python的语法清晰简洁,阅读性好,容易上手,是初学者学习编程的理想选择。丰富的库和框架:Python拥有庞大的标准库和第三方库,几乎覆盖了所有常见的编程任......
  • 【Python基础】一篇文章带你了解Python能够运用到哪些场景当中!!!
    Python作为一种功能强大且灵活的高级编程语言,具有广泛的应用场景。以下是Python的一些主要应用场景:1.Web应用开发Web框架:Python提供了多个强大的Web开发框架,如Django、Flask、Pyramid和Tornado等。这些框架可以帮助开发者快速构建Web应用程序,并提供了丰富的功能和工具,如模板......