- Python 基础
- Python - 首页
- Python - 概述
- Python - 历史
- Python - 特性
- Python vs 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 - OS 文件/目录方法
- Python - OS 路径方法
- 面向对象编程
- Python - OOPs 概念
- 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 库
- NumPy 教程
- Pandas 教程
- SciPy 教程
- Matplotlib 教程
- Django 教程
- OpenCV 教程
- Python 杂项
- Python - 日期与时间
- Python - 数学
- Python - 迭代器
- Python - 生成器
- Python - 闭包
- Python - 装饰器
- Python - 递归
- Python - 正则表达式
- Python - PIP
- Python - 数据库访问
- Python - 弱引用
- Python - 序列化
- Python - 模板
- Python - 输出格式化
- Python - 性能测量
- Python - 数据压缩
- Python - CGI 编程
- Python - XML 处理
- Python - GUI 编程
- Python - 命令行参数
- Python - 文档字符串
- Python - JSON
- Python - 发送邮件
- Python - 扩展
- Python - 工具/实用程序
- Python - GUIs
- Python 高级概念
- Python - 抽象基类
- Python - 自定义异常
- Python - 高阶函数
- Python - 对象内部
- Python - 内存管理
- Python - 元类
- Python - 使用元类进行元编程
- Python - 模拟和存根
- Python - Monkey Patching
- Python - 信号处理
- Python - 类型提示
- Python - 自动化教程
- Python - Humanize 包
- Python - 上下文管理器
- Python - 协程
- Python - 描述符
- Python - 诊断和修复内存泄漏
- Python - 不可变数据结构
- Python 有用资源
- Python - 问答
- Python - 在线测验
- Python - 快速指南
- Python - 参考
- Python - 速查表
- Python - 项目
- Python - 有用资源
- Python - 讨论
- Python 编译器
- NumPy 编译器
- Matplotlib 编译器
- SciPy 编译器
Python - 类型转换
Python 类型转换
从编程的角度来看,类型转换是指将一个类型的对象转换为另一个类型。在这里,我们将学习 Python 编程中的类型转换。
Python 类型转换是一个将一种数据类型的字面量转换为另一种数据类型的过程。Python 支持两种类型的转换——**隐式**和**显式**。
在 Python 中,有不同的数据类型,例如数字、序列、映射等。可能会有这种情况,你拥有某种类型的数据,但你想以另一种形式使用它。例如,用户输入了一个字符串,但你想将其用作数字。Python 的类型转换机制允许你这样做。
Python 隐式转换
当任何语言编译器/解释器自动将一种类型的对象转换为另一种类型时,这称为自动或**隐式转换**。Python 是一种强类型语言。它不允许在不相关的数据类型之间进行自动类型转换。例如,字符串不能转换为任何数字类型。但是,整数可以转换为浮点数。其他语言,如 JavaScript 是一种弱类型语言,其中整数会被强制转换为字符串以进行连接。
请注意,每种数据类型的内存需求不同。例如,Python 中的**整数**对象占用 4 个字节的内存,而**浮点数**对象由于其小数部分而需要 8 个字节。因此,Python 解释器不会自动将**浮点数**转换为**整数**,因为这会导致数据丢失。另一方面,通过将其小数部分设置为 0,可以轻松地将**整数**转换为**浮点数**。
当对**整数**和**浮点数**操作数进行任何算术运算时,会发生隐式**整数**到**浮点数**的转换。
假设我们有一个**整数**和一个**浮点数**变量
<<< a=10 # int object <<< b=10.5 # float object
为了执行它们的加法,整数对象 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) #converts a float object to int <<< a 10 <<< a = int(2*3.14) #expression results float, is converted to int <<< 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 = ("10"+"01") <<< 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 组成,并且基数应为 2。
<<< a = int("110011", 2) <<< a 51
二进制数 110011 的十进制等价值为 51。
八进制字符串转换为整数
字符串只能包含 0 到 7 的数字,并且基数应为 8。
<<< a = int("20", 8) <<< a 16
八进制数 20 的十进制等价值为 16。
十六进制字符串转换为整数
字符串只能包含十六进制符号,即 0-9 和 A、B、C、D、E 或 F。基数应为 16。
<<< a = int("2A9", 16) <<< a 681
十六进制数 2A9 的十进制等价值为 681。您可以使用 Windows、Ubuntu 或智能手机中的计算器应用程序轻松验证这些转换。
以下是如何将数字、浮点数和字符串转换为整数数据类型的示例
a = int(1) # a will be 1 b = int(2.2) # b will be 2 c = int("3") # c will be 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 will be 1.0 b = float(2.2) # b will be 2.2 c = float("3.3") # c will be 3.3 print (a) print (b) print (c)
这将产生以下结果:
1.0 2.2 3.3
Python str() 函数
我们看到了 Python 如何从相应的字符串表示中获得整数或浮点数。str() 函数的工作方式相反。它用引号 (') 括起整数或浮点对象以返回 str 对象。str() 函数返回任何 Python 对象的字符串表示。在本节中,我们将看到 Python 中str() 函数的不同示例。
str() 函数具有三个参数。第一个必需参数(或参数)是我们要获取其字符串表示的对象。其他两个运算符 encoding 和 errors 是可选的。
我们将执行 Python 控制台中的 str() 函数,以轻松验证返回的对象是一个字符串,并带有包含的引号 (')。
整数转换为字符串
您可以按照如下方式将任何整数转换为字符串
<<< 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 will be "1" b = str(2.2) # b will be "2.2" c = str("3.3") # c will be "3.3" print (a) print (b) print (c)
这将产生以下结果:
1 2.2 3.3
序列类型的转换
列表、元组和字符串是 Python 的序列类型。它们是有序或索引的项目集合。
可以使用list() 函数将字符串和元组转换为列表对象。类似地,tuple() 函数将字符串或列表转换为元组。
我们将采用这三种序列类型的每个对象,并研究它们的相互转换。
<<< a=[1,2,3,4,5] # List Object <<< b=(1,2,3,4,5) # Tupple Object <<< c="Hello" # String Object ### list() separates each character in the string and builds the list <<< obj=list(c) <<< obj ['H', 'e', 'l', 'l', 'o'] ### The parentheses of tuple are replaced by square brackets <<< obj=list(b) <<< obj [1, 2, 3, 4, 5] ### tuple() separates each character from string and builds a tuple of characters <<< obj=tuple(c) <<< obj ('H', 'e', 'l', 'l', 'o') ### square brackets of list are replaced by parentheses. <<< obj=tuple(a) <<< obj (1, 2, 3, 4, 5) ### str() function puts the list and tuple inside the quote symbols. <<< 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 指定基数。 |
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 必须是 (键,值) 元组的序列。 |
12 | Python frozenset() 函数
将 s 转换为冻结集。 |
13 | Python chr() 函数
将整数转换为字符。 |
14 | Python unichr() 函数
将整数转换为 Unicode 字符。 |
15 | Python ord() 函数
将单个字符转换为其整数值。 |
16 | Python hex() 函数
将整数转换为十六进制字符串。 |
17 | Python oct() 函数
将整数转换为八进制字符串。 |