【Python爬虫与数据分析】进阶语法

这篇具有很好参考价值的文章主要介绍了【Python爬虫与数据分析】进阶语法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、异常捕获

二、迭代器

三、拆包、聚合、映射

四、filter() 函数

五、匿名函数

六、闭包

七、装饰器


一、异常捕获

异常捕获可增强程序的健壮性,即程序在遇到遇到异常的时候并不会做中断处理,而是会将异常抛出,由程序员来分析异常和做异常处理。

a = 1
b = '2'
 
try:
    print('运算开始')    # 执行
    print(a + b)
except Exception as e:
    print('运行报错')    # 执行
    print(e)            
else:
    print('未出现异常')  # 未执行
finally:
    print('运行完毕')    # 执行

二、迭代器

迭代器通常用于数据结构对象的遍历,可以通过for循环控制或者next()函数控制,next()函数中可以添加防报错提示,防止next()越界访问。

# 1 2 3 4 这四个数字可以组成多少个各个位数不同的数字
count = 0
_list = [1, 2, 3, 4]
for i in _list:
    for j in _list:
        for k in _list:
            for l in _list:
                # 利用集合的特性
                if len({i, j, k, l}) == 4:
                    sum = i * 1000 + j * 100 + k * 10 + l
                    print(sum, end=' ')
                    count += 1
print(f'\ncount = {count}')

x = 'python'
y = iter(x)
print(y)    # <str_iterator object at 0x0000016D5FF99A80>
print(next(y, '已经迭代结束了'))   # p, 在next函数中的字符串,便是防报错提示
print(next(y, '已经迭代结束了'))   # y
print(next(y, '已经迭代结束了'))   # t
print(next(y, '已经迭代结束了'))   # h
print(next(y, '已经迭代结束了'))   # o
print(next(y, '已经迭代结束了'))   # n
print(next(y, '已经迭代结束了'))   # 已经迭代结束了
print(next(y, '已经迭代结束了'))   # 已经迭代结束了
print(next(y, '已经迭代结束了'))   # 已经迭代结束了

三、拆包、聚合、映射

# 拆包
i, j, k, l = [1, 2, 3, 4]
print(i, end=" ")
print(j, end=" ")
print(k, end=" ")
print(l)    # 1 2 3 4

# 聚合, 短板效应
x = [1, 2]
y = [1, 2, 3]
z = ['hello', 'world', '!']
print(zip(x, y, z))     # <zip object at 0x000001E496F37500>
for e in zip(x, y, z):
    print(e, end=" ")   # (1, 1, 'hello') (2, 2, 'world') 32 9 100
print()

# 映射,短板效应
x = [2, 3, 10, 2]
y = [5, 2, 2]
a = map(pow, x, y)  # pow()幂函数,pow(2, 5), pow(3, 2), pow(10, 2)
print(a)            # <map object at 0x000001B45AC2ADA0>
for e in a:
    print(e, end=" ")   # 32 9 100

四、filter() 函数

filter() 函数从数据结构对象obj中筛选出符合某个函数func()条件的数据

filter() 函数会根据所提供的func()函数可迭代对象obj的每个元素进行遍历,将遍历时的运算结果为真的元素,以迭代器的形式返回

def Even(n):
    return n % 2 == 0
 
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b = list(filter(Even, a))
print(b)    # [2, 4, 6, 8, 10]

 

五、匿名函数

在Python语言中除了def语句用来定义函数之外,还可以使用匿名函数 lambda,它是Python一种生成函数对象的表达式形式。

  • 匿名函数通常是创建了可以被调用的函数,它返回了函数,而并没有将这个函数命名。
  • 普通函数需要去依靠函数名去调用,而匿名函数没有,所以需要把这个函数对象复制给某个变量进行调用
  • lambda有时被叫做匿名函数也就是这个原因,需要一个函数,又不想动脑筋去想名字,这就是匿名函数。
  • 匿名函数的 : 冒号前面的变量是形参,冒号后面的变量是返回值,返回值后面可以加条件判断语句对返回值做选择
func = lambda x, y : x + y
print(func(2, 5))   # 7
 
func = lambda x : x if x % 2 == 0 else None
print(func(4))      # 4
print(func(5))      # None

六、闭包

闭包函数的必要条件

  • 闭包函数必须返回一个函数对象
  • 闭包函数返回的那个函数必须引用外部变量(一般不能是全局变量),而返回的那个函数内部不一定要return
def func():
    name = 'python'
    def inner():
        print('hello world')
        return name
    return inner
 
f = func()
f()     # hello world
 
print(f())
# hello world
# python

用闭包实现日志记录程序

import logging
def log_header(logger_name):
    logging.basicConfig(level=logging.DEBUG, format='%(asctime)s [%(name)s] %(levelname)s  %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
    logger = logging.getLogger(logger_name)
 
    def _logging(something, level):
        if level == 'debug':
            logger.debug(something)
        elif level == 'warning':
            logger.warning(something)
        elif level == 'error':
            logger.error(something)
        else:
            raise Exception("I dont know what you want to do?" )
    return _logging
 
project_1_logging = log_header('project_1')
project_2_logging = log_header('project_2')
 
def project_1():
    #do something
    project_1_logging('this is a debug info', 'debug')
    #do something
    project_1_logging('this is a warning info', 'warning')
    # do something
    project_1_logging('this is a error info', 'error')
 
def project_2():
    # do something
    project_2_logging('this is a debug info', 'debug')
    # do something
    project_2_logging('this is a warning info', 'warning')
    # do something
    project_2_logging('this is a critical info', 'error')
 
project_1()
project_2()
#输出
2018-05-26 22:56:23 [project_1] DEBUG  this is a debug info
2018-05-26 22:56:23 [project_1] WARNING  this is a warning info
2018-05-26 22:56:23 [project_1] ERROR  this is a error info
2018-05-26 22:56:23 [project_2] DEBUG  this is a debug info
2018-05-26 22:56:23 [project_2] WARNING  this is a warning info
2018-05-26 22:56:23 [project_2] ERROR  this is a critical info

七、装饰器

闭包:本质也是函数,参数和返回值都是函数,对函数进行增强

语法糖:没有增强新功能,对语言没有影响,更方便程序员使用文章来源地址https://www.toymoban.com/news/detail-526043.html

import time


def CountTimeWrapper(func):
    # 闭包
    def ImproveFunc(*args, **kwargs):  # 增强函数应该把接收到的参数传给原函数
        start_time = time.perf_counter()
        ret = func(*args, **kwargs)  # 传入参数并记录返回值
        end_time = time.perf_counter()
        print(f'函数的执行时间为{end_time - start_time}')
        return ret

    return ImproveFunc


@CountTimeWrapper  # @闭包函数名,就是装饰器,自增强一次
def PrintOdds(lim=100):
    cnt = 0
    for i in range(lim):
        if i % 2 == 0:
            cnt += 1
    return cnt


if __name__ == '__main__':
    # PrintOdds = CountTimeWrapper(PrintOdds)
    # 装饰器等价于在第一次调用时执行上面语句
    print(PrintOdds())  # 打印程序运行时间和计算结果

到了这里,关于【Python爬虫与数据分析】进阶语法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【Python爬虫与数据分析】基本数据结构

    目录 一、概述 二、特性 三、列表 四、字典 Python基本数据结构有四种,分别是列表、元组、集合、字典 ,这是Python解释器默认的数据结构,可以直接使用,无需像C语言那样需要手搓或像C++那样需要声明STL头文件。 Python的数据结构非常灵活,对数据类型没有限制,即一个数

    2024年02月11日
    浏览(10)
  • 大数据爬虫分析基于Python+Django旅游大数据分析系统

    大数据爬虫分析基于Python+Django旅游大数据分析系统

    欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。    基于Python和Django的旅游大数据分析系统是一种使用Python编程语言和Django框架开发的系统,用于处理和分析旅游行业的大数据,为旅游从业者和决策者提供有关旅游趋势、客户需求、市场竞争

    2024年02月03日
    浏览(11)
  • 【100天精通Python】Day53:Python 数据分析_NumPy数据操作和分析进阶

    目录 1. 广播  2 文件输入和输出 3 随机数生成 4 线性代数操作  5 进阶操作

    2024年02月09日
    浏览(42)
  • Python爬虫数据分析的基本概念

    Python爬虫数据分析是一种利用Python编程语言和相关的库来获取互联网上的数据,并对数据进行处理、分析和可视化的技术。Python爬虫数据分析技术在数据挖掘、商业智能、市场调研、舆情分析等领域都有广泛的应用。本文将介绍Python爬虫数据分析的基本概念、常用库和实战案

    2024年02月06日
    浏览(12)
  • 大数据舆情评论数据分析:基于Python微博舆情数据爬虫可视化分析系统(NLP情感分析+爬虫+机器学习)

    大数据舆情评论数据分析:基于Python微博舆情数据爬虫可视化分析系统(NLP情感分析+爬虫+机器学习)

    基于Python的微博舆情数据爬虫可视化分析系统,结合了NLP情感分析、爬虫技术和机器学习算法。该系统的主要目标是从微博平台上抓取实时数据,对这些数据进行情感分析,并通过可视化方式呈现分析结果,以帮助用户更好地了解舆情动向和情感倾向。系统首先利用爬虫技术

    2024年04月15日
    浏览(15)
  • python爬虫分析基于python图书馆书目推荐数据分析与可视化

    python爬虫分析基于python图书馆书目推荐数据分析与可视化

    收藏关注不迷路 随着电子技术的普及和快速发展,线上管理系统被广泛的使用,有很多商业机构都在实现电子信息化管理,图书推荐也不例外,由比较传统的人工管理转向了电子化、信息化、系统化的管理。 传统的图书推荐管理,一开始都是手工记录,然后将手工记录的文

    2024年02月08日
    浏览(12)
  • 【Python爬虫与数据分析】进程、线程、协程

    【Python爬虫与数据分析】进程、线程、协程

    目录 一、概述 二、进程的创建 三、线程的创建 四、协程的创建 五、全局变量的共享问题 六、消息队列与互斥锁 七、池化技术 进程是系统分配资源的基本单位,线程是CPU调度的基本单位。 一个进程可包含多个线程,一个线程可包含多个协程,协程就是最小的任务执行单位

    2024年02月13日
    浏览(13)
  • 【Python爬虫与数据分析】面向对象设计

    目录 一、类的构建与继承 二、多继承 三、钻石继承 四、多态 五、鸭子类型 六、类的组合 七、类的私有属性和方法 八、魔法方法 九、单例模式 类 的属性包含 成员变量 和 成员函数 (方法) 成员函数 又分为 静态方法 、 魔法方法 、 普通成员方法 静态方法可以直接被类

    2024年02月11日
    浏览(8)
  • Python多线程爬虫——数据分析项目实现详解

    Python多线程爬虫——数据分析项目实现详解

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家 :https://www.captainbed.cn/z 「个人网站」 :雪碧的个人网站 ChatGPT体验地址 爬虫是指一种自动化程序,能够模拟人类用户在互联网上浏览网页、抓取网页内容、提取数据等操作。爬虫通常

    2024年01月18日
    浏览(14)
  • 【Python爬虫与数据分析】爬虫常用标准库(时间、随机数)

    【Python爬虫与数据分析】爬虫常用标准库(时间、随机数)

    目录 一、模块化概述 二、time库 1. 时间获取 2. 时间格式化 3. 程序计时 三、datetime库 1. datetime.datetime类 2. datetime.timedelta类 四、random库 1. 基本随机函数 2. 扩展随机函数 3. 随机时间的生成 Python程序由模块组成,一个模块对应一个 .py 源文件。 模块分为 标准库模块 和 自定义模

    2024年02月15日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包