(3)100天python从入门到拿捏

作者:硅基工坊日期:2025/11/1

Python3 基本数据类型

Python 中的变量不需要声明,它没有类型,每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建

文章目录

  • Python3 基本数据类型
  • 一、数据类型介绍
      • 1. 数值类型(Numeric Types)
          • 1.1 整数(int)
            * 1.2 浮点数(float)
            * 1.3 复数(complex)
        • 2. 字符串类型(String)
        • 3. 布尔类型(Boolean)
        • 4. 列表类型(List)
        • 5. 元组类型(Tuple)
        • 6. 字典类型(Dictionary)
        • 7. 集合类型(Set)
        • 8. None 类型
  • 二、可变数据与不可变数据
      • 可变数据类型
          • 1. 定义
            * 2. 常见的可变数据类型
            * 3. 特点
            * 4. 案例
        • 不可变数据类型
          • 1. 定义
            * 2. 常见的不可变数据类型
            * 3. 特点
            * 4. 案例
        • 可变和不可变的主要区别
        • 可变与不可变的副作用
  • 三、类型转换
      • 类型检查

一、数据类型介绍

1. 数值类型(Numeric Types)

Python 中有三种主要的数值类型:整数(int)浮点数(float)复数(complex)

1.1 整数(int)
  • 描述:整数类型用于表示没有小数点的数字,可以是正整数、负整数或零。
  • 示例
1a = 42        # 正整数  
2b = -100      # 负整数  
3c = 0         # 零  
  • 特点
    • Python 3 中的整数可以表示任意大小,不会因为值过大而溢出(仅受系统内存限制)。
1.2 浮点数(float)
  • 描述:浮点数用于表示带有小数点的数字或科学计数法表示的数字。
  • 示例
1a = 3.14      # 普通浮点数  
2b = -0.001    # 负浮点数  
3c = 1.23e4    # 科学计数法表示的浮点数(1.23 × 10^4)  
  • 特点
    • 浮点数在计算中可能会出现精度问题(例如 0.1 + 0.2 可能不等于 0.3)。
1.3 复数(complex)
  • 描述:复数用于表示形如 a + bj 的复数,其中 a 是实部,b 是虚部,j 是虚数单位。
  • 示例
1a = 2 + 3j   # 复数  
2b = -1 + 2j  # 负复数  
  • 特点
    • 复数可以使用内置函数 complex() 创建。
    • 复数可以进行加、减、乘、除等运算。

注意

1、Python可以同时为多个变量赋值,如a, b = 1, 2。

2、一个变量可以通过赋值指向不同类型的对象。

3、数值的除法包含两个运算符:/ 返回一个浮点数,// 返回一个整数。

4、在混合计算时,Python会把整型转换成为浮点数。

2. 字符串类型(String)

  • 描述:字符串是由字符组成的序列,可以用单引号 '、双引号 " 或三引号 '''""" 包裹。

注意:另外,反斜杠()可以作为续行符,表示下一行是上一行的延续。也可以使用 “”“…”“” 或者 ‘’‘…’‘’ 跨越多行。Python 没有单独的字符类型,一个字符就是长度为1的字符串

  • 示例
1s1 = 'Hello'  
2s2 = "World"  
3s3 = """这是  
4多行字符串"""  
  • 特点
    • 字符串是不可变的,即一旦创建,字符串内容不能被修改。
    • 可以通过索引访问单个字符,或使用切片操作。
    • 反斜杠可以用来转义,使用r可以让反斜杠不发生转义,表示原始字符串
    • 支持常见的字符串操作,如拼接、分割、查找、替换等。
    • Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
    • 可以使用**+** 连接字符串, 星号n ***** 复制当前字符串,n表示复制次数

3. 布尔类型(Boolean)

  • 描述:布尔类型表示 TrueFalse 的值,用于逻辑判断和条件表达式中。

注:在 Python 中,True 和 False 都是关键字,表示布尔值

  • 示例
1a = True  
2b = False  
  • 特点
    • 布尔值可以参与数学运算,True 等于 1,False 等于 0。

4. 列表类型(List)

  • 描述:列表是一个有序的可变容器,可以包含不同类型的元素。列表是写在方括号 [] 之间、用逗号分隔开的元素列表。和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。

注:列表中元素的类型可以不相同,支持列表嵌套。

  • 示例
1lst = [1, 2, 3, 'hello', 3.14]  
  • 特点
    • 列表是有序的,元素可以通过索引访问。
    • 支持修改、删除、添加元素等操作。
    • 可以包含不同类型的数据。

5. 元组类型(Tuple)

  • 描述:元组与列表类似,但元组是不可变的。元组写在小括号 () 里,元素之间用逗号隔开。

注:元组中的元素类型也可以不相同

  • 示例
1tup = (1, 2, 3, 'hello')  
  • 特点
    • 元组是有序的,元素可以通过索引访问。
    • 元组不可变,无法修改、删除、添加元素。
    • 元组通常用于表示不需要修改的数据集。

6. 字典类型(Dictionary)

  • 描述:列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。键(key)必须使用不可变类型。在同一个字典中,键(key)必须是唯一的
  • 示例
1d = {'name': 'Alice', 'age': 25}  
  • 特点
    • 字典中的元素是无序的,键是唯一的。
    • 通过键访问对应的值。
    • 键必须是不可变的类型(如字符串、元组),而值可以是任意类型。

7. 集合类型(Set)

  • 描述:集合是一个无序的、不重复的元素集合,用于进行数学集合操作。
    集合使用大括号 {} 表示,元素之间用逗号 , 分隔。另外,也可以使用 set() 函数创建集合。

**注意:**创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

  • 示例
1s = {1, 2, 3, 4}  
  • 特点
    • 集合中的元素是唯一的,不允许重复。
    • 支持集合运算,如并集、交集、差集等。

8. None 类型

  • 描述None 是 Python 中的特殊类型,表示“无值”或“空值”。
  • 示例
1a = None  
  • 特点
    • None 经常用于表示函数没有返回值或某个变量为空。

二、可变数据与不可变数据

在 Python 中,数据类型可以分为 可变数据类型不可变数据类型。这两者的主要区别在于对象在内存中的存储方式以及它们是否能够被修改。

可变数据类型

1. 定义
  • 可变数据类型是指对象的值在创建后可以改变。这意味着,当你修改一个可变对象时,它的内存地址不会改变,只会改变对象的内容。
2. 常见的可变数据类型
  • 列表(list)
  • 字典(dict)
  • 集合(set)
3. 特点
  • 可以修改内容:你可以对可变对象的内容进行修改,而不需要创建新的对象。
  • 内存地址不变:修改对象内容时,它的内存地址保持不变。
  • 效率较高:因为它们可以直接在原地修改,不需要创建新的对象,所以效率更高。
4. 案例
1# 列表是可变的
2lst = [1, 2, 3]
3print(id(lst))  # 打印列表的内存地址
4lst.append(4)   # 修改列表内容
5print(lst)      # 输出:[1, 2, 3, 4]
6print(id(lst))  # 打印列表的内存地址(不会改变)
7# 字典是可变的
8d = {'name': 'Alice', 'age': 25}
9print(id(d))     # 打印字典的内存地址
10d['age'] = 26    # 修改字典内容
11print(d)         # 输出:{'name': 'Alice', 'age': 26}
12print(id(d))     # 打印字典的内存地址(不会改变)
13

不可变数据类型

1. 定义
  • 不可变数据类型是指对象的值一旦创建后不能修改。如果你尝试修改不可变对象的内容,Python 会创建一个新的对象,并将修改后的值赋给新的对象。
2. 常见的不可变数据类型
  • 整数(int)
  • 浮点数(float)
  • 字符串(str)
  • 元组(tuple)
  • 布尔类型(bool)
  • frozenset(冻结集合)
3. 特点
  • 不可修改内容:一旦创建了不可变对象,它的值就不能改变。
  • 创建新对象:对不可变对象的修改操作会创建一个新的对象,而原对象保持不变。
  • 内存地址改变:当修改不可变对象时,它的内存地址会改变,因为 Python 会创建一个新的对象。
4. 案例
1# 整数是不可变的
2a = 10
3print(id(a))  # 打印整数的内存地址
4a += 1        # 修改整数,实际上是创建一个新的整数对象
5print(a)      # 输出:11
6print(id(a))  # 打印新的整数的内存地址(发生了变化)
7# 字符串是不可变的
8s = "hello"
9print(id(s))  # 打印字符串的内存地址
10s += " world" # 修改字符串,实际上是创建一个新的字符串对象
11print(s)      # 输出:"hello world"
12print(id(s))  # 打印新的字符串的内存地址(发生了变化)
13# 元组是不可变的
14t = (1, 2, 3)
15print(id(t))  # 打印元组的内存地址
16t += (4,)     # 修改元组,实际上是创建一个新的元组对象
17print(t)      # 输出:(1, 2, 3, 4)
18print(id(t))  # 打印新的元组的内存地址(发生了变化)
19

可变和不可变的主要区别

特性可变数据类型不可变数据类型
修改内容可以直接修改内容不能修改内容,修改时会创建新对象
内存地址修改时内存地址不变修改时会创建新的对象,内存地址会改变
性能修改操作效率高,因为是在原地修改修改操作需要创建新对象,相对较慢
使用场景适用于需要频繁修改内容的数据结构适用于数据不需要修改或只读的数据结构
示例列表、字典、集合整数、浮点数、字符串、元组

可变与不可变的副作用

  • 不可变类型:由于不可变对象不能修改,因此它们的副作用较少,更易于理解和推理。例如,传递不可变对象作为函数参数时,函数内的操作不会影响外部的对象。
  • 可变类型:可变对象在多个地方引用时可能引发副作用。修改可变对象时,所有引用该对象的地方都会看到变化。这种行为有时会导致难以预料的错误,特别是在函数传参时。
1def modify_list(lst):  
2    lst.append(4)  # 修改传入的列表  
3original_list = [1, 2, 3]  
4modify_list(original_list)  
5print(original_list)  # 输出:[1, 2, 3, 4],原列表被修改  

三、类型转换

Python 提供了内置函数用于类型转换,可以将一种数据类型转换为另一种数据类型:

函数描述
int(x,base)将x转换为一个整数
float(x)将x转换到一个浮点数
complex(real,imag)创建一个复数
str(x)将对象 x 转换为字符串
repr(x)将对象 x 转换为表达式字符串
eval(str)用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s)将序列 s 转换为一个元组
list(s)将序列 s 转换为一个列表
set(s)转换为可变集合
dict(d)创建一个字典。d 必须是一个 (key, value)元组序列。
frozenset(s)转换为不可变集合
chr(x)将一个整数转换为一个字符
ord(x)将一个字符转换为它的整数值
hex(x)将一个整数转换为一个十六进制字符串
oct(x)将一个整数转换为一个八进制字符串

这些函数返回一个新的对象,表示转换的值

类型检查

内置的 type() 函数可以用来查询变量所指的对象类型

1print(type(42))        # <class 'int'>
2print(type('hello'))   # <class 'str'>
3print(type([1, 2, 3])) # <class 'list'>
4

(3)100天python从入门到拿捏》 是转载文章,点击查看原文


相关推荐


数据库连接详解:从基础到实践
培风图南以星河揽胜2025/10/30

数据库连接详解:从基础到实践 在现代软件开发中,数据库是存储和管理数据的核心组件。无论是Web应用、移动应用还是数据分析系统,都离不开与数据库的交互。而这一切的基础,就是数据库连接。本文将深入浅出地介绍数据库连接的基本概念、原理、实现方式以及最佳实践,帮助你构建高效、稳定的数据库访问层。 1. 什么是数据库连接? 简单来说,数据库连接(Database Connection) 是应用程序与数据库服务器之间建立的一个通信通道。通过这个通道,应用程序可以发送SQL查询、接收查询结果、执行事


【案例实战】智能出行导航助手HarmonyOS 开发全流程复盘
cooldream20092025/10/27

目录 前言1. 项目概述与目标设定1.1 项目背景1.2 技术选型与总体方案 2. 架构设计:分布式与模块化融合2.1 设计思路2.2 模块化的实践价值 3. HarmonyOS 开放能力集成实战3.1 云开发(Cloud Development)3.2 性能监控与调优(APMS)3.3 分布式软总线:多端协同核心 4. 性能优化体系建设4.1 启动优化分层策略4.2 内存与功耗控制4.3 云函数响应优化 5. 经验复盘与开发心得5.1 架构先行,分布式思维贯穿始终5.2 善用


vue.js 视频截取为 gif - 2(将截取到的gif 转换为base64 、file)
改了一个昵称2025/10/25

demo.vue <template> <div> <div> <video ref="videoRef" :src="theUrl" controls autoplay muted crossOrigin="anonymous"></video> <!-- <div class="controls"> <button :disabled="isRecording" @click="startCapture"> 开始录制


华为Java专业级科目一通过心得
想要AC的dly2025/10/22

华为Java专业级科目一通过心得 最近顺利通过了Java专业级科目一考试。在这个过程中,我积累了一些心得体会,希望分享给大家,尤其是那些正在备考的朋友。考试并不像想象中那么难,只要掌握好基础,保持练习,就能轻松应对。下面我从几个方面谈谈我的备考经验。 1. 每天坚持使用Java,保持手感 备考Java考试,最基础的就是要保持对语言的熟悉度。我建议大家每天都用一用Java,哪怕只是写一些简单的代码片段。比如,编写一个算法题、调试一段程序,或者参与开源项目。这样做能帮助你维持“手感”,避免考试


网络速度测试工具——SpeedTest使用指南
好学的Jack2025/10/21

本文还有配套的精品资源,点击获取 简介:SpeedTest是一款用于测量互联网上传下载速度、网络延迟和数据传输稳定性的工具。软件通过连接最近的服务器进行一系列网络测试,帮助用户识别网络问题和性能瓶颈。测试步骤包括初始化测试、下载速度测试、上传速度测试、ping测试、Jitter测试和丢包率测试。安装程序“SpeedTestInstall.exe”允许用户通过简单步骤设置软件,从而进行日常或周期性的网络速度检查。 1. 网络速度测试工具使用 随着互联网技术的发展,家庭和企


EtherCAT转ModbusTCP工业智能网关:开启仓储自动化通信变革的技术桥梁
捷米特研发一部2025/10/20

一、项目背景与核心痛点 某大型智能物流中心占地10万平方米,部署了超过200台自动化设备,其中包括基于Modbus TCP协议的西门子PLC、研华工控机等主站设备,以及采用EtherCAT协议的高精度编码器、智能仪表和协作机器人。由于协议不兼容,设备间通信存在诸多问题: 效率瓶颈:PLC下发分拣指令至EtherCAT机器人响应延迟达500ms,导致分拣线节拍混乱,单日吞吐量下降20%; 故障频发:编码器位置数据无法实时同步至HMI界面,设备异常需人工巡检发现,平均故障停机时间长达1.5小时


Vue3 状态管理完全指南:从响应式 API 到 Pinia
90后晨仔2025/10/19

什么是状态管理? 在 Vue 开发中,状态管理是一个核心概念。简单来说,状态就是驱动应用的数据源。每一个 Vue 组件实例都在管理自己的响应式状态,让我们从一个简单的计数器组件开始理解: <script setup> import { ref } from 'vue' // 状态 - 驱动应用的数据源 const count = ref(0) // 动作 - 修改状态的方法 function increment() { count.value++ } </script> <!-- 视图


Python快速落地的临床知识问答与检索项目(2025年9月教学配置部分)
Allen_Lyb2025/10/17

项目概述与技术选型 本项目定位为临床辅助决策支持工具,而非替代临床诊断的独立系统,旨在解决医疗行业两大核心痛点:一是医学知识更新速率加快,2025 年临床指南年均更新量较 2020 年增长 47%,传统知识管理方式难以同步;二是科室规范呈现碎片化分布,不同院区、亚专科的诊疗流程存在差异,导致知识检索效率低下。技术路线采用 RAG 知识库 + ChatFlow 多轮对话 + 工具节点对接 的三层架构,通过整合指南文献、临床路径和院内 SOP 文档,满足门诊快速问诊、病房随访问答及科室知识库精


滴滴P0级故障背后:互联网公司是如何分级处理线上事故的?
G探险者2025/10/16

大家好,我是G探险者! 像滴滴、阿里、腾讯、华为、字节等大型互联网公司都会对线上故障(事故)进行分级管理,以便快速响应、统一调度、追责复盘。 下面我给你系统性地介绍一下——常见的互联网公司故障分级标准(P0~P4),并结合滴滴、阿里等企业的实践来说明: 🚨 一、故障分级的总体目标 通过分级来 量化故障影响范围与严重程度,从而决定响应等级、通知机制、处理时限与复盘流程。 一般采用的分级体系如下:


面试真实经历某商银行大厂Java问题和答案总结(五)
360_go_php2025/10/15

​ Java 面试常见问题解析​编辑 Java 中的多线程和类加载机制是开发中非常重要的部分。在面试过程中,涉及线程管理和 JVM 的相关问题经常出现。本文将探讨一些 Java 面试中的常见问题,并为每个问题提供详细的解答。 ​编辑--- 1. 线程的同步方法 线程的同步方法是指通过某些机制来控制多线程环境中多个线程对共享资源的访问,以防止数据冲突。以下是几种常见的同步方法: synchronized 关键字: synchronized 关键字可以用来修饰方法或代码块,确保同一时刻只有一个线

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0