主页
  • 主页
  • 分类
  • 热文
  • 教程
  • 面试
  • 标签
Python

Python 基础

Python 主页
Python 概述
Python 历史
Python 功能
Python 与 C++
Python Hello World
Python 应用领域
Python 解释器及其模式
Python 环境设置
Python 虚拟环境
Python 语法
Python 变量
Python 数据类型
Python 类型转换
Python Unicode 系统
Python 文字
Python 运算符
Python 算术运算符
Python 比较运算符
Python 赋值运算符
Python 逻辑运算符
Python 位运算符
Python 成员运算符
Python 身份运算符
Python 运算符优先级
Python 注释
Python 用户输入
Python 数字
Python 布尔值

Python 控制语句

Python 控制流
Python 决策
Python if 语句
Python if-else 语句
Python 嵌套 if 语句
Python match-case 语句
Python 循环
Python For 循环
Python for-else 循环
Python while 循环
Python break 语句
Python Continue 语句
Python pass 语句
Python 嵌套循环

Python 函数和模块

Python 函数
Python 默认参数
Python 关键字参数
Python 关键字专用参数
Python 位置参数
Python 仅限位置参数
Python 任意或可变长度参数
Python 变量作用域
Python 函数注释
Python 模块
Python 内置函数

Python 字符串

Python 字符串
Python 字符串切片
Python 字符串修改
Python 字符串连接
Python 字符串格式化
Python 转义字符
Python 字符串方法
Python 字符串练习

Python 列表

Python 列表
Python 访问列表项
Python 更改列表项
Python 添加列表项
Python 删除列表项
Python 循环列表
Python 列表推导式
Python 排序列表
Python 复制列表
Python 合并列表
Python 列表方法
Python 列表练习

Python 元组

Python 元组
Python 访问元组项
Python 更新元组
Python 解包元组项
Python 循环元组
Python 合并元组
Python 元组方法
Python 元组练习

Python 集合

Python 集合
Python 访问集合项
Python 添加集合项
Python 删除集合项
Python 循环集合
Python 合并集合
Python 复制集合
Python 集合运算符
Python 集合方法
Python 集合练习

Python 字典

Python 字典
Python 访问字典项
Python 更改字典项
Python 添加字典项
Python 移除字典项
Python 字典视图对象
Python 循环字典
Python 复制字典
Python 嵌套字典
Python 字典方法
Python 字典练习

Python 数组

Python 数组
Python 访问数组项
Python 添加数组项
Python 移除数组项
Python 循环数组
Python 复制数组
Python 反转数组
Python 排序数组
Python 合并数组
Python 数组方法
Python 数组练习

Python 文件处理

Python 文件处理
Python 文件写入
Python 文件读取
Python 重命名和删除文件
Python 目录
Python 文件方法
Python 文件/目录方法
Python OS.Path 方法

Python 面向对象编程

Python OOP 概念
Python 类和对象
Python 类属性
Python 类方法
Python 静态方法
Python 构造函数
Python 访问修饰符
Python 继承
Python 多态
Python 方法重写
Python 方法重载
Python 动态绑定
Python 动态类型
Python 抽象
Python 封装
Python 接口
Python 包
Python 内部类
Python 匿名类和对象
Python 单例类
Python 包装器类
Python 枚举
Python 反射

Python 错误和异常

Python 语法错误
Python 异常处理
Python Try-Except
Python Try-Finally
Python 抛出异常
Python 异常链
Python 嵌套 try
Python 用户定义异常
Python 日志记录
Python 断言
Python 内置异常

Python 多线程

Python 多线程
Python 线程生命周期
Python 创建线程
Python 启动线程
Python 合并线程
Python 命名线程
Python 线程调度
Python 线程池
Python 主线程
Python 线程优先级
Python 守护线程
Python 线程同步

Python 同步

Python 线程间通信
Python 死锁
Python 中断线程

Python 网络

Python 网络编程
Python 套接字编程
Python URL 处理
Python 泛型

Python 杂项

Python Date and Time
Python math模块
Python 迭代器
Python 生成器
Python 闭包
Python 装饰器
Python 递归
Python 正则表达式
Python Pip
Python 数据库访问
Python 弱引用
Python 序列化
Python 模板技术
Python 输出格式化
Python 性能测量
Python 数据压缩
Python 通用网关接口
Python XML 处理
Python 用户界面(GUI)
Python 命令行参数
Python Docstrings
Python JSON
Python 发送电子邮件
Python 进一步扩展
Python 工具/实用程序
Python GUI

Python 高级概念

Python 抽象基类
Python 自定义异常
Python 高阶函数
Python 对象的内部机制
Python 内存管理
Python 元类
Python 元编程
Python 模拟与桩
Python 猴子补丁
Python 信号处理
Python 类型提示
Python 进行自动化
Python Humanize包
Python 上下文管理器
Python 协程
Python 描述符
Python 内存泄漏
Python 不可变数据结构

基础

Python 主页
Python 概述
Python 历史
Python 功能
Python 与 C++
Python Hello World
Python 应用领域
Python 解释器及其模式
Python 环境设置
Python 虚拟环境
Python 语法
Python 变量
Python 数据类型
Python 类型转换
Python Unicode 系统
Python 文字
Python 运算符
Python 算术运算符
Python 比较运算符
Python 赋值运算符
Python 逻辑运算符
Python 位运算符
Python 成员运算符
Python 身份运算符
Python 运算符优先级
Python 注释
Python 用户输入
Python 数字
Python 布尔值

控制语句

Python 控制流
Python 决策
Python if 语句
Python if-else 语句
Python 嵌套 if 语句
Python match-case 语句
Python 循环
Python For 循环
Python for-else 循环
Python while 循环
Python break 语句
Python Continue 语句
Python pass 语句
Python 嵌套循环

函数和模块

Python 函数
Python 默认参数
Python 关键字参数
Python 关键字专用参数
Python 位置参数
Python 仅限位置参数
Python 任意或可变长度参数
Python 变量作用域
Python 函数注释
Python 模块
Python 内置函数

字符串

Python 字符串
Python 字符串切片
Python 字符串修改
Python 字符串连接
Python 字符串格式化
Python 转义字符
Python 字符串方法
Python 字符串练习

列表

Python 列表
Python 访问列表项
Python 更改列表项
Python 添加列表项
Python 删除列表项
Python 循环列表
Python 列表推导式
Python 排序列表
Python 复制列表
Python 合并列表
Python 列表方法
Python 列表练习

元组

Python 元组
Python 访问元组项
Python 更新元组
Python 解包元组项
Python 循环元组
Python 合并元组
Python 元组方法
Python 元组练习

集合

Python 集合
Python 访问集合项
Python 添加集合项
Python 删除集合项
Python 循环集合
Python 合并集合
Python 复制集合
Python 集合运算符
Python 集合方法
Python 集合练习

字典

Python 字典
Python 访问字典项
Python 更改字典项
Python 添加字典项
Python 移除字典项
Python 字典视图对象
Python 循环字典
Python 复制字典
Python 嵌套字典
Python 字典方法
Python 字典练习

数组

Python 数组
Python 访问数组项
Python 添加数组项
Python 移除数组项
Python 循环数组
Python 复制数组
Python 反转数组
Python 排序数组
Python 合并数组
Python 数组方法
Python 数组练习

文件处理

Python 文件处理
Python 文件写入
Python 文件读取
Python 重命名和删除文件
Python 目录
Python 文件方法
Python 文件/目录方法
Python OS.Path 方法

面向对象编程

Python OOP 概念
Python 类和对象
Python 类属性
Python 类方法
Python 静态方法
Python 构造函数
Python 访问修饰符
Python 继承
Python 多态
Python 方法重写
Python 方法重载
Python 动态绑定
Python 动态类型
Python 抽象
Python 封装
Python 接口
Python 包
Python 内部类
Python 匿名类和对象
Python 单例类
Python 包装器类
Python 枚举
Python 反射

错误和异常

Python 语法错误
Python 异常处理
Python Try-Except
Python Try-Finally
Python 抛出异常
Python 异常链
Python 嵌套 try
Python 用户定义异常
Python 日志记录
Python 断言
Python 内置异常

多线程

Python 多线程
Python 线程生命周期
Python 创建线程
Python 启动线程
Python 合并线程
Python 命名线程
Python 线程调度
Python 线程池
Python 主线程
Python 线程优先级
Python 守护线程
Python 线程同步

同步

Python 线程间通信
Python 死锁
Python 中断线程

网络

Python 网络编程
Python 套接字编程
Python URL 处理
Python 泛型

杂项

Python Date and Time
Python math模块
Python 迭代器
Python 生成器
Python 闭包
Python 装饰器
Python 递归
Python 正则表达式
Python Pip
Python 数据库访问
Python 弱引用
Python 序列化
Python 模板技术
Python 输出格式化
Python 性能测量
Python 数据压缩
Python 通用网关接口
Python XML 处理
Python 用户界面(GUI)
Python 命令行参数
Python Docstrings
Python JSON
Python 发送电子邮件
Python 进一步扩展
Python 工具/实用程序
Python GUI

高级概念

Python 抽象基类
Python 自定义异常
Python 高阶函数
Python 对象的内部机制
Python 内存管理
Python 元类
Python 元编程
Python 模拟与桩
Python 猴子补丁
Python 信号处理
Python 类型提示
Python 进行自动化
Python Humanize包
Python 上下文管理器
Python 协程
Python 描述符
Python 内存泄漏
Python 不可变数据结构

Python 类型转换


上一章 下一章

从编程的角度来看,类型转换指的是将一个对象从一种类型转换成另一种类型。在这里,我们将学习 Python 编程中的类型转换。

Python 类型转换是一个过程,其中我们将一种数据类型的文字转换为另一种数据类型。Python 支持两种类型的转换——隐式和显式。

Python 隐式类型转换

当任何语言编译器/解释器自动将一个类型的对象转换为另一个类型时,这被称为自动或隐式转换。Python 是一种强类型语言。它不允许无关数据类型之间的自动类型转换。例如,一个字符串不能被转换为任何数字类型。然而,整数可以转换为浮点数。其他语言如 JavaScript 是一种弱类型语言,在那里整数会被强制转换为字符串以进行连接。

请注意,每种数据类型的内存需求是不同的。例如,Python 中的整数对象占用 4 字节的内存,而浮点对象由于其小数部分需要 8 字节。因此,Python 解释器不会自动将浮点数转换为整数,因为这会导致数据丢失。另一方面,整数可以很容易地通过将其小数部分设置为 0 来转换为浮点数。

当整数和浮点数操作数进行任何算术操作时,隐式的整数到浮点数转换会发生。

假设我们有一个整数变量和一个浮点数变量:

>>> a = 10   # 整数对象
>>> b = 10.5 # 浮点数对象

为了执行它们的加法,整数对象 10 被升级为 10.0,这是一个浮点数,但其数值与之前的相同。现在我们可以对两个浮点数执行加法。

>>> c = a + b
>>> print(c)
20.5

在隐式类型转换中,较小字节数大小的 Python 对象被升级以匹配操作中较大字节数大小的对象。例如,在与浮点对象相加之前,布尔对象首先被升级为整数然后转为浮点数。在下面的例子中,我们试图将一个布尔对象加到一个浮点数上,请注意 True 等于 1,而 False 等于 0。

a = True
b = 10.5
c = a + b
print(c)

这将产生如下结果:

11.5

Python 显式类型转换

虽然自动或隐式转换仅限于整数到浮点数的转换,你可以使用 Python 的内置函数 int(), float() 和 str() 来执行显式转换,例如字符串到整数的转换。

Python int() 函数

Python 的内置 int() 函数将整数文字转换为整数对象,将浮点数转换为整数,并将字符串转换为整数,前提是该字符串具有有效的整数表示形式。

使用 int() 函数与整数对象作为参数相当于直接声明一个整数对象。

>>> a = int(10)
>>> a
10

这是等同于:

>>> a = 10
>>> a
10
>>> type(a)
<class 'int'>

如果 int() 函数的参数是一个浮点对象或浮点表达式,它将返回一个整数对象。例如:

>>> a = int(10.5) # 将浮点对象转换为整数
>>> a
10
>>> a = int(2 * 3.14) # 表达式结果为浮点数,转换为整数
>>> a
6
>>> type(a)
<class 'int'>

int() 函数还将在给定布尔对象作为参数时返回整数 1。

>>> a = int(True)
>>> a
1
>>> type(a)
<class 'int'>

字符串到整数

int() 函数仅在字符串对象包含有效整数表示的情况下才返回整数。

>>> a = int("100")
>>> a
100
>>> type(a)
<class 'int'>
>>> a = int("10" + "01")
>>> a
1001
>>> type(a)
<class 'int'>

然而,如果字符串包含非整数表示,Python 会引发 ValueError。

>>> a = int("10.5")
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '10.5'
>>> a = int("Hello World")
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'Hello World'

int() 函数也可以从二进制、八进制和十六进制字符串返回整数。为此,函数需要一个 base 参数,必须是 2、8 或 16。字符串应该具有有效的二进制/八进制/十六进制表示。

二进制字符串到整数

字符串应仅由 1 和 0 组成,且 base 应为 2。

>>> a = int("110011", 2)
>>> a
51

十进制等价于二进制数 110011 是 51。

八进制字符串到整数

字符串应仅包含 0 到 7 的数字,且 base 应为 8。

>>> a = int("20", 8)
>>> a
16

八进制 20 的十进制等价是 16。

十六进制字符串到整数

字符串应仅包含十六进制符号,即 0-9 和 A, B, C, D, E 或 F。Base 应为 16。

>>> a = int("2A9", 16)
>>> a
681

十六进制 2A9 的十进制等价是 681。

以下是将数字、浮点数和字符串转换为整数数据类型的示例:

a = int(1)     # a 将是 1
b = int(2.2)   # b 将是 2
c = int("3")   # c 将是 3

print(a)
print(b)
print(c)

这将产生如下结果:

1
2
3

Python float() 函数

float() 是 Python 中的一个内置函数。如果参数是一个浮点文字、整数或具有有效浮点表示的字符串,它将返回一个浮点对象。

使用 float() 函数与浮点对象作为参数等同于直接声明一个浮点对象。

>>> a = float(9.99)
>>> a
9.99
>>> type(a)
<class 'float'>

这是等同于:

>>> a = 9.99
>>> a
9.99
>>> type(a)
<class 'float'>

如果 float() 函数的参数是一个整数,返回的值将是一个带有小数部分设置为 0 的浮点数。

>>> a = float(100)
>>> a
100.0
>>> type(a)
<class 'float'>

float() 函数从字符串返回浮点对象,前提是字符串包含一个有效的浮点数,否则将引发 ValueError。

>>> a = float("9.99")
>>> a
9.99
>>> type(a)
<class 'float'>
>>> a = float("1,234.50")
Traceback (most recent call last):

   File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: '1,234.50'

这里 ValueError 的原因是字符串中存在逗号。

为了字符串到浮点数的转换目的,科学计数法的浮点表示也被认为是有效的。

>>> a = float("1.00E4")
>>> a
10000.0
>>> type(a)
<class 'float'>
>>> a = float("1.00E-4")
>>> a
0.0001
>>> type(a)
<class 'float'>

以下是将数字、浮点数和字符串转换为浮点数据类型的示例:

a = float(1)     # a 将是 1.0
b = float(2.2)   # b 将是 2.2
c = float("3.3") # c 将是 3.3

print(a)
print(b)
print(c)

这将产生如下结果:

1.0
2.2
3.3

Python str() 函数

我们已经看到 Python 如何从相应的字符串表示中获得整数或浮点数。str() 函数的作用正好相反。它将整数或浮点数对象包围在引号(')中,返回一个 str 对象。str() 函数返回任何 Python 对象的字符串表示形式。在本节中,我们将查看 str() 函数的不同例子。

str() 函数有三个参数。第一个必需的参数(或参数)是我们想要其字符串表示的对象。其他两个操作符,encoding 和 errors,是可选的。

我们将执行 str() 函数在 Python 控制台中轻松验证返回的对象是一个字符串,并带有包围的引号(')。

整数到字符串

您可以将任何整数转换为字符串如下:

>>> a = str(10)
>>> a
'10'
>>> type(a)
<class 'str'>

浮点数到字符串

str() 函数将浮点对象转换为字符串对象,无论是标准表示法还是科学记数法。

>>> a = str(11.10)
>>> a
'11.1'
>>> type(a)
<class 'str'>
>>> a = str(2 / 5)
>>> a
'0.4'
>>> type(a)
<class 'str'>

在第二种情况下,一个除法表达式被作为参数传递给 str() 函数。请注意,表达式首先被求值,然后结果被转换为字符串。

使用 E 或 e 和正负指数的科学记数法浮点数被 str() 函数转换为字符串。

>>> a = str(10E4)
>>> a
'100000.0'
>>> type(a)
<class 'str'>
>>> a = str(1.23e-4)
>>> a
'0.000123'
>>> type(a)
<class 'str'>

当布尔常量作为参数输入时,它被包围在引号(')中,使得 True 变为 'True'。列表和元组对象也可以作为 str() 函数的参数。结果字符串是被引号包围的列表/元组。

>>> a = str(True)
>>> a
'True'
>>> a = str([1, 2, 3])
>>> a
'[1, 2, 3]'
>>> a = str((1, 2, 3))
>>> a
'(1, 2, 3)'
>>> a = str({1: 100, 2: 200, 3: 300})
>>> a
'{1: 100, 2: 200, 3: 300}'

以下是将数字、浮点数和字符串转换为字符串数据类型的示例:

a = str(1)     # a 将是 "1"
b = str(2.2)   # b 将是 "2.2"
c = str("3.3") # c 将是 "3.3"

print(a)
print(b)
print(c)

这将产生如下结果:

1
2.2
3.3

序列类型的转换

列表(List)、元组(Tuple)和字符串(String)是 Python 的序列类型。它们都是有序的或索引化的项目集合。

一个字符串或元组可以通过使用 list() 函数转换为列表对象。类似地,tuple() 函数可以将字符串或列表转换为元组。

我们将取这三个序列类型中的每一个对象并研究它们之间的相互转换。

>>> a = [1, 2, 3, 4, 5]   # 列表对象
>>> b = (1, 2, 3, 4, 5)   # 元组对象
>>> c = "Hello"            # 字符串对象

### list() 分离字符串中的每个字符并构建列表
>>> obj = list(c)
>>> obj
['H', 'e', 'l', 'l', 'o']

### 元组的括号被替换为方括号
>>> obj = list(b)
>>> obj
[1, 2, 3, 4, 5]

### tuple() 从字符串分离每个字符并构建字符元组
>>> obj = tuple(c)
>>> obj
('H', 'e', 'l', 'l', 'o')

### 列表的方括号被替换为圆括号
>>> obj = tuple(a)
>>> obj
(1, 2, 3, 4, 5)

### str() 函数将列表和元组放在引号内
>>> obj = str(a)
>>> obj
'[1, 2, 3, 4, 5]'

>>> obj = str(b)
>>> obj
'(1, 2, 3, 4, 5)'

因此,Python 的显式类型转换功能允许使用其内置函数将一种数据类型转换为另一种。

数据类型转换函数

有许多内置函数用于执行从一种数据类型到另一种的数据转换。这些函数返回一个新的表示转换后值的对象。

序号 函数名 描述
1 Python int() 函数 将 x 转换为整数。如果 x 是字符串,则 base 指定基数。
2 Python long() 函数 将 x 转换为长整数。如果 x 是字符串,则 base 指定基数。(Python 3 中已移除)
3 Python float() 函数 将 x 转换为浮点数。
4 Python complex() 函数 创建复数。
5 Python str() 函数 将对象 x 转换为字符串表示形式。
6 Python repr() 函数 将对象 x 转换为表达式字符串。
7 Python eval() 函数 评估一个字符串并返回一个对象。
8 Python tuple() 函数 将 s 转换为元组。
9 Python list() 函数 将 s 转换为列表。
10 Python set() 函数 将 s 转换为集合。
11 Python dict() 函数 创建字典。d 必须是一系列 (key,value) 元组。
12 Python frozenset() 函数 将 s 转换为冻结集合。
13 Python chr() 函数 将整数转换为字符。
14 Python unichr() 函数 将整数转换为 Unicode 字符。(Python 3 中已被 chr() 替代)
15 Python ord() 函数 将单个字符转换为其整数值。
16 Python hex() 函数 将整数转换为十六进制字符串。
17 Python oct() 函数 将整数转换为八进制字符串。
上一章 下一章
阅读号二维码

关注阅读号

联系二维码

联系我们

© 2024 Yoagoa. All rights reserved.

粤ICP备18007391号

站点地图