python 爬虫技术 第02节 基础复习
Python基础复习
Python 是一种高级、通用、解释型的编程语言,以其简洁的语法和强大的功能在数据科学、Web 开发、自动化脚本编写、机器学习等领域广泛使用。下面是一些 Python 基础概念的复习:
1. 数据类型
Python 支持多种内置数据类型,包括:
- 数字 (
int,float,complex) - 字符串 (
str) - 列表 (
list):有序的元素集合,可以修改。 - 元组 (
tuple):有序的元素集合,不可修改。 - 字典 (
dict):键值对的集合,键必须是不可变类型。 - 集合 (
set):无序的不重复元素集。
2. 控制结构
- 条件语句 (
if,elif,else):基于条件执行不同的代码块。 - 循环语句 (
for,while):重复执行一段代码直到满足特定条件。
3. 函数
- 定义函数 (
def):创建可重用的代码块。 - 参数传递:可以按位置或按名称传递参数,支持默认参数值和不定数量的参数。
- 返回值:函数可以返回一个或多个值。
4. 模块和包
- 导入模块 (
import):使用其他模块中的代码。 - 包:包含多个模块的目录,通过
__init__.py文件标识为包。
5. 文件操作
- 打开文件 (
open()):以不同模式读写文件。 - 读写操作:
read(),write(),readline(),readlines()等方法。 - 关闭文件 (
close()):确保文件资源被释放。
6. 异常处理
- try…except…finally 结构:捕获并处理运行时错误。
- raise:抛出异常。
- assert:断言条件,用于调试。
7. 类和对象
- 定义类 (
class):面向对象编程的基础。 - 实例化对象:创建类的实例。
- 属性和方法:类的成员变量和函数。
8. 标准库和第三方库
- 标准库:Python 自带的大量模块,提供各种功能。
- 安装第三方库 (
pip install):使用 PyPI 上的额外模块。
9. 编程风格
- PEP 8:Python 的官方编码规范,指导代码书写风格。
10. 注释和文档字符串
- 单行注释 (
#) 和 多行注释 (""" """或''' ''')。 - 文档字符串:函数、类和模块的第一行字符串,用于描述其用途和用法。
以上只是 Python 基础知识的简要回顾,实际编程中还涉及许多进阶主题,如装饰器、生成器、迭代器、上下文管理器、多线程和多进程等。为了巩固和提升编程技能,建议结合实际项目练习,并参考官方文档和社区资源进行深入学习。
Python 的数据类型是其核心特性之一,它提供了丰富的内置类型来处理各种数据。以下是 Python 中主要的数据类型及其特点的详细讲解:
数字类型
-
整数 (int)
- 整数是没有小数点的数值,可以是正数、负数或零。
- Python 3 中的整数没有大小限制,仅受限于可用内存。
-
浮点数 (float)
- 浮点数包含小数点,用于表示实数。
- 它们遵循 IEEE 754 标准,因此可能有舍入误差。
-
复数 (complex)
- 复数由实部和虚部组成,虚部后跟字母 j 或 J。
- 例如:
1 + 2j。
序列类型
序列类型是 Python 中用来存储有序数据的类型。
-
字符串 (str)
- 字符串是由字符组成的序列,用单引号
'或双引号", 或三引号'''或"""包围。 - 字符串是不可变的,这意味着一旦创建就不能修改。
- 字符串是由字符组成的序列,用单引号
-
列表 (list)
- 列表是由任意类型的元素组成的有序集合,用方括号
[ ]表示。 - 列表是可变的,可以添加、删除或修改其中的元素。
- 列表是由任意类型的元素组成的有序集合,用方括号
-
元组 (tuple)
- 元组与列表类似,但它是不可变的,用圆括号
( )表示。 - 虽然元组不能修改,但可以包含任何类型的元素。
- 元组与列表类似,但它是不可变的,用圆括号
映射类型
- 字典 (dict)
- 字典是键值对的集合,键必须是不可变类型(如字符串、数字或元组),而值可以是任意类型。
- 字典是无序的,但在 Python 3.7+ 版本中,它们保持了插入顺序。
集合类型
-
集合 (set)
- 集合是无序且不重复的元素集合,用花括号
{ }表示或使用set()构造函数创建。 - 集合支持数学上的集合运算,如并集、交集、差集和对称差集。
- 集合是无序且不重复的元素集合,用花括号
-
frozenset
- frozenset 是一个不可变的集合类型,一旦创建就无法修改。
布尔类型
- 布尔 (bool)
- 布尔类型只有两个值:
True和False,通常用于逻辑表达式和条件判断。
- 布尔类型只有两个值:
NoneType
- None
None是一个特殊的常量,表示空或无值的状态,属于NoneType类型。
示例代码
# 数字类型
num_int = 10
num_float = 10.5
num_complex = 3 + 5j# 序列类型
str_example = "Hello, World!"
list_example = [1, 2, 3]
tuple_example = (1, 2, 3)# 映射类型
dict_example = {'key': 'value', 1: [1, 2, 3]}# 集合类型
set_example = {1, 2, 3, 3} # 重复元素会被自动去除# 布尔类型
bool_example = True# NoneType
none_example = None
这些数据类型是 Python 编程的基础,理解和掌握它们对于编写有效的代码至关重要。
当然,让我们通过更多的代码示例来深入理解 Python 中的数据类型和它们的一些基本操作。以下是一些示例,展示不同类型数据的使用:
数字类型示例
# 整数和浮点数的算术运算
num_int = 10
num_float = 5.5sum_result = num_int + num_float
diff_result = num_int - num_float
product_result = num_int * num_float
quotient_result = num_int / num_floatprint("Sum:", sum_result)
print("Difference:", diff_result)
print("Product:", product_result)
print("Quotient:", quotient_result)# 复数的运算
num_complex_1 = 3 + 2j
num_complex_2 = 1 + 1jsum_complex = num_complex_1 + num_complex_2
diff_complex = num_complex_1 - num_complex_2
product_complex = num_complex_1 * num_complex_2
quotient_complex = num_complex_1 / num_complex_2print("Complex Sum:", sum_complex)
print("Complex Difference:", diff_complex)
print("Complex Product:", product_complex)
print("Complex Quotient:", quotient_complex)
序列类型示例
# 字符串操作
str_example = "Hello, World!"
print("Length of string:", len(str_example))
print("Substring from index 7 to 12:", str_example[7:12])
print("String in uppercase:", str_example.upper())
print("String split by comma:", str_example.split(','))# 列表操作
list_example = [1, 2, 3, 4, 5]
print("List length:", len(list_example))
list_example.append(6)
print("List after append:", list_example)
list_example.remove(2)
print("List after removing 2:", list_example)
print("List reversed:", list_example[::-1])# 元组操作
tuple_example = (1, 2, 3)
print("Tuple length:", len(tuple_example))
print("Tuple converted to list:", list(tuple_example))
映射类型示例
# 字典操作
dict_example = {'name': 'John', 'age': 30}
print("Dictionary items:", dict_example.items())
print("Dictionary keys:", dict_example.keys())
print("Dictionary values:", dict_example.values())
dict_example['age'] = 31
print("Updated dictionary:", dict_example)
dict_example.pop('age')
print("Dictionary after pop:", dict_example)
集合类型示例
# 集合操作
set_example_1 = {1, 2, 3, 4}
set_example_2 = {3, 4, 5, 6}union_set = set_example_1.union(set_example_2)
intersection_set = set_example_1.intersection(set_example_2)
difference_set = set_example_1.difference(set_example_2)
symmetric_difference_set = set_example_1.symmetric_difference(set_example_2)print("Union:", union_set)
print("Intersection:", intersection_set)
print("Difference:", difference_set)
print("Symmetric Difference:", symmetric_difference_set)
这些示例展示了 Python 数据类型的常见操作,包括算术运算、索引、切片、转换、更新和集合运算。通过这些例子,你可以看到每种数据类型如何在实际编程中被使用。
相关文章:
python 爬虫技术 第02节 基础复习
Python基础复习 Python 是一种高级、通用、解释型的编程语言,以其简洁的语法和强大的功能在数据科学、Web 开发、自动化脚本编写、机器学习等领域广泛使用。下面是一些 Python 基础概念的复习: 1. 数据类型 Python 支持多种内置数据类型,包…...
数据结构-C语言-排序(3)
代码位置:test-c-2024: 对C语言习题代码的练习 (gitee.com) 一、前言: 1.1-排序定义: 排序就是将一组杂乱无章的数据按照一定的规律(升序或降序)组织起来。(注:我们这里的排序采用的都为升序) 1.2-排序分…...
【分布式事务】怎么解决分布式场景下数据一致性问题
分布式事务的由来 拿充值订单举个栗子吧,假设:原本订单模块和账户模块是放在一起的,现在需要做服务拆分,拆分成订单服务,账户余额服务。原本收到充值回调后,可以将修改订单状态和扣减余额放在一个mysql事务…...
C# 中的委托
委托的概念 在C#中,委托是一种引用类型,它表示对方法的引用,即委托就是一种用来指向一个方法的引用类型变量。委托的声明类似于方法签名,但是关键字是delegate。下面是一个委托的声明和使用的例子: // 声明一个委托 p…...
通过docker构建基于LNMP的WordPress项目
目录 1.准备nginx 2.准备mysql 3.准备php 4.构建各镜像 5.运行wordpress 1、项目环境: 1.1 (1)公司在实际的生产环境中,需要使用Docker 技术在一台主机上创建LNMP服务并运行Wordpress网站平台。然后对此服务进行相关的性能…...
2024新版IntelliJ IDEA修改包名 全网最简单最粗暴的方法
问题再现 我们在网上淘一些后端框架 又或者是开源的项目 如果要变成自己的 难免会去改包名 即把com.后面的内容改成自己自定义的 第一次我们直接用网络上的方法 shift F6 快捷键 可以修改包名 出现以下情况 进行修改 我们发现失败了 并没有像预计的一样直接把包名修…...
C#中处理Socket粘包
在C#中使用Socket进行网络通信时,粘包问题是常见的。粘包问题通常发生在TCP协议中,因为TCP是流式协议,数据可能会被分割成多个包发送,也可能多个小包会被合并成一个大包接收。 处理粘包问题的常见方法是使用消息分隔符或消息长度…...
7.19IO
思维导图 第一题:测试错误检查锁和递归锁是否会造成死锁状态 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #i…...
【Vue】深入了解 Axios 在 Vue 中的使用:从基本操作到高级用法的全面指南
文章目录 一、Axios 简介与安装1. 什么是 Axios?2. 安装 Axios 二、在 Vue 组件中使用 Axios1. 发送 GET 请求2. 发送 POST 请求 三、Axios 拦截器1. 请求拦截器2. 响应拦截器 四、错误处理五、与 Vuex 结合使用1. 在 Vuex 中定义 actions2. 在组件中调用 Vuex acti…...
【Qt】窗口
文章目录 QMainWindow菜单栏工具栏状态栏浮动窗口对话框自定义对话框Qt内置对话框QMessageBox QMainWindow Qt中的主窗口以QMainWindow表示,其总体结构如下: 菜单栏 菜单栏MenuBar,可包含多个菜单Menu,每个菜单也可以包含多个菜…...
代码随想录训练营【贪心算法篇】
贪心 注:本文代码来自于代码随想录 贪心算法一般分为如下四步: 将问题分解为若干个子问题找出适合的贪心策略求解每一个子问题的最优解将局部最优解堆叠成全局最优解 这个四步其实过于理论化了,我们平时在做贪心类的题目 很难去按照这四步…...
Spark中的JOIN机制
Spark中的JOIN机制 1、Hash Join概述2、影响JOIN的因素3、Spark中的JOIN机制3.1、Shuffle Hash Join3.2、Broadcast Hash Join3.3、Sort Merge Join3.4、Cartesian Product Join3.5、Broadcast Nested Loop Join4、Spark中的JOIN策略5、Spark JOIN机制与策略总结5.1、Spark中的…...
WebRTC QOS方法十三.1(TimestampExtrapolator接收时间预估)
一、背景介绍 虽然我们可通过时间戳的差值和采样率计算出发送端视频帧的发送节奏,但是由于网络延迟、抖动、丢包,仅知道视频发送端的发送节奏是明显不够的。我们还需要评估出视频接收端的视频帧的接收节奏,然后进行适当平滑,保证…...
深入了解 GCC
GCC,全称 GNU Compiler Collection,是 GNU 项目的一部分,是一个功能强大且广泛使用的编译器套件。它支持多种编程语言,包括 C、C、Fortran、Java、Ada 和 Go。GCC 具有高度的可移植性,几乎可以在所有现代计算机体系结构…...
vscode 打开远程bug vscode Failed to parse remote port from server output
vscode 打开远程bug vscode Failed to parse remote port from server output 原因如图: 解决:...
前端组件化技术实践:Vue自定义顶部导航栏组件的探索
摘要 随着前端技术的飞速发展,组件化开发已成为提高开发效率、降低维护成本的关键手段。本文将以Vue自定义顶部导航栏组件为例,深入探讨前端组件化开发的实践过程、优势以及面临的挑战,旨在为广大前端开发者提供有价值的参考和启示。 一、引…...
PyTorch Autograd内部实现
原文: 克補 爆炸篇 25s (youtube.com) 必应视频 (bing.com)https://www.bing.com/videos/riverview/relatedvideo?&qPyTorchautograd&qpvtPyTorchautograd&mid1B8AD76943EFADD541E01B8AD76943EFADD541E0&&FORMVRDGAR 前面只要有一个node的re…...
微信小程序 vant-weapp的 SwipeCell 滑动单元格 van-swipe-cell 滑动单元格不显示 和 样式问题 滑动后删除样式不显示
在微信小程序开发过程中 遇到个坑 此处引用 swipeCell 组件 刚开始是组件不显示 然后又遇到样式不生效 首先排除问题 是否在.json文件中引入了组件 {"usingComponents": {"van-swipe-cell": "vant/weapp/swipe-cell/index","van-cell-gro…...
3.4、matlab实现SGM/BM/SAD立体匹配算法计算视差图
1、matlab实现SGM/BM/SAD立体匹配算法计算视差图简介 SGM(Semi-Global Matching)、BM(Block Matching)和SAD(Sum of Absolute Differences)都是用于计算立体匹配(Stereo Matching)的…...
【瑞吉外卖 | day07】移动端菜品展示、购物车、下单
文章目录 瑞吉外卖 — day71. 导入用户地址簿相关功能代码1.1 需求分析1.2 数据模型1.3 代码开发 2. 菜品展示2.1 需求分析2.2 代码开发 3. 购物车3.1 需求分析3.2 数据模型3.3 代码开发 4. 下单4.1 需求分析4.2 数据模型4.3 代码开发 瑞吉外卖 — day7 移动端相关业务功能 —…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...
MySQL技术内幕1:内容介绍+MySQL编译使用介绍
文章目录 1.整体内容介绍2.下载编译流程2.1 安装编译工具和依赖库2.2 下载编译 3.配置MySQL3.1 数据库初始化3.2 编辑配置文件3.3 启动停止MySQL3.4 登录并修改密码 1.整体内容介绍 MySQL技术系列文章将从MySQL下载编译,使用到MySQL各组件使用原理源码分析…...
BERT, GPT, Transformer之间的关系
1. Transformer 是什么?简单介绍 1.1 通俗理解 想象你是一个翻译员,要把一句话从中文翻译成英文。你需要同时看句子里的每个词,理解它们之间的关系。Transformer就像一个超级翻译助手,它用“自注意力机制”(Attentio…...
ES海量数据更新及导入导出备份
一、根据查询条件更新字段 from elasticsearch import Elasticsearch import redis import json# 替换下面的用户名、密码和Elasticsearch服务器地址 username elastic password password es_host https://127.0.0.2:30674# 使用Elasticsearch实例化时传递用户名和密码 es…...
DeepSeek R1 V2 深度探索:开源AI编码新利器,效能与创意并进
最近,AI界迎来了一位神秘的“突袭者”——DeepSeek团队悄无声息地发布了其推理模型DeepSeek R1的重磅升级版V2(具体型号R1-0528)。这款基于MIT许可的开源模型,在原版R1的基础上进行了多项令人瞩目的改进,正以其强大的潜…...
