当前位置: 首页 > news >正文

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 中主要的数据类型及其特点的详细讲解:

数字类型

  1. 整数 (int)

    • 整数是没有小数点的数值,可以是正数、负数或零。
    • Python 3 中的整数没有大小限制,仅受限于可用内存。
  2. 浮点数 (float)

    • 浮点数包含小数点,用于表示实数。
    • 它们遵循 IEEE 754 标准,因此可能有舍入误差。
  3. 复数 (complex)

    • 复数由实部和虚部组成,虚部后跟字母 j 或 J。
    • 例如:1 + 2j

序列类型

序列类型是 Python 中用来存储有序数据的类型。

  1. 字符串 (str)

    • 字符串是由字符组成的序列,用单引号 ' 或双引号 ", 或三引号 '''""" 包围。
    • 字符串是不可变的,这意味着一旦创建就不能修改。
  2. 列表 (list)

    • 列表是由任意类型的元素组成的有序集合,用方括号 [ ] 表示。
    • 列表是可变的,可以添加、删除或修改其中的元素。
  3. 元组 (tuple)

    • 元组与列表类似,但它是不可变的,用圆括号 ( ) 表示。
    • 虽然元组不能修改,但可以包含任何类型的元素。

映射类型

  1. 字典 (dict)
    • 字典是键值对的集合,键必须是不可变类型(如字符串、数字或元组),而值可以是任意类型。
    • 字典是无序的,但在 Python 3.7+ 版本中,它们保持了插入顺序。

集合类型

  1. 集合 (set)

    • 集合是无序且不重复的元素集合,用花括号 { } 表示或使用 set() 构造函数创建。
    • 集合支持数学上的集合运算,如并集、交集、差集和对称差集。
  2. frozenset

    • frozenset 是一个不可变的集合类型,一旦创建就无法修改。

布尔类型

  1. 布尔 (bool)
    • 布尔类型只有两个值:TrueFalse,通常用于逻辑表达式和条件判断。

NoneType

  1. 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

思维导图 第一题&#xff1a;测试错误检查锁和递归锁是否会造成死锁状态 #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&#xff1f;2. 安装 Axios 二、在 Vue 组件中使用 Axios1. 发送 GET 请求2. 发送 POST 请求 三、Axios 拦截器1. 请求拦截器2. 响应拦截器 四、错误处理五、与 Vuex 结合使用1. 在 Vuex 中定义 actions2. 在组件中调用 Vuex acti…...

【Qt】窗口

文章目录 QMainWindow菜单栏工具栏状态栏浮动窗口对话框自定义对话框Qt内置对话框QMessageBox QMainWindow Qt中的主窗口以QMainWindow表示&#xff0c;其总体结构如下&#xff1a; 菜单栏 菜单栏MenuBar&#xff0c;可包含多个菜单Menu&#xff0c;每个菜单也可以包含多个菜…...

代码随想录训练营【贪心算法篇】

贪心 注&#xff1a;本文代码来自于代码随想录 贪心算法一般分为如下四步&#xff1a; 将问题分解为若干个子问题找出适合的贪心策略求解每一个子问题的最优解将局部最优解堆叠成全局最优解 这个四步其实过于理论化了&#xff0c;我们平时在做贪心类的题目 很难去按照这四步…...

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接收时间预估)

一、背景介绍 虽然我们可通过时间戳的差值和采样率计算出发送端视频帧的发送节奏&#xff0c;但是由于网络延迟、抖动、丢包&#xff0c;仅知道视频发送端的发送节奏是明显不够的。我们还需要评估出视频接收端的视频帧的接收节奏&#xff0c;然后进行适当平滑&#xff0c;保证…...

深入了解 GCC

GCC&#xff0c;全称 GNU Compiler Collection&#xff0c;是 GNU 项目的一部分&#xff0c;是一个功能强大且广泛使用的编译器套件。它支持多种编程语言&#xff0c;包括 C、C、Fortran、Java、Ada 和 Go。GCC 具有高度的可移植性&#xff0c;几乎可以在所有现代计算机体系结构…...

vscode 打开远程bug vscode Failed to parse remote port from server output

vscode 打开远程bug vscode Failed to parse remote port from server output 原因如图&#xff1a; 解决&#xff1a;...

前端组件化技术实践:Vue自定义顶部导航栏组件的探索

摘要 随着前端技术的飞速发展&#xff0c;组件化开发已成为提高开发效率、降低维护成本的关键手段。本文将以Vue自定义顶部导航栏组件为例&#xff0c;深入探讨前端组件化开发的实践过程、优势以及面临的挑战&#xff0c;旨在为广大前端开发者提供有价值的参考和启示。 一、引…...

PyTorch Autograd内部实现

原文&#xff1a; 克補 爆炸篇 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&#xff08;Semi-Global Matching&#xff09;、BM&#xff08;Block Matching&#xff09;和SAD&#xff08;Sum of Absolute Differences&#xff09;都是用于计算立体匹配&#xff08;Stereo Matching&#xff09;的…...

【瑞吉外卖 | 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 移动端相关业务功能 —…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...