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 移动端相关业务功能 —…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...