当前位置:首页>python>Python开发从零开始-18-基础语法(数据类型转换)

Python开发从零开始-18-基础语法(数据类型转换)

  • 2026-10-11 08:03:53
Python开发从零开始-18-基础语法(数据类型转换)
在Python开发过程中,经常会遇到数据类型之间的转换问题,例如:
  • input() 接受用户输入,而返回的是字符串类型,需要转为数字;
  • 将浮点型数字转为整数型数字;
  • 将不可变序列(字符串或元组)转换为可变序列(列表);
  • .....
本文小编与大家分享Python数据类型转换相关知识。
一、数据类型转换的概念

数据类型转换‌是将一种数据类型的值转换为另一种数据类型的值的过程。这种转换在编程中非常常见,主要用于满足运算、赋值或函数调用等场景中不同类型数据之间的兼容性需求。

二、数据类型转换的分类

根据转换方式和是否需要显式干预,数据类型转换主要分为隐式类型转换和显示类型转换两类。

(一)隐式类型转换

在隐式类型转换中,Python会自动将一种数据类型转换为另一种数据类型,不需要程序员去干预。在Python中隐式类型转换主要应用于数学运算、布尔表达式和函数调用等场景。

1、数学运算

在数学运算中,Python会自动将较低的数字类型自动转换为较高的数据类型,然后参与运算,以避免数据丢失。例如:int 与 float 类型运算时,会自动转换为 float 类型。编程示例如下:

【小编提示】
  • 在编程语言中,“较低的数据类型”和“较高的数据类型”通常用于描述‌数据类型在隐式类型转换中的优先级,系统会将较低的数据类型自动转换为较高的数据类型,以避免数据丢失;

  • Python的数据类型在隐式类型转换的优先级可以理解为:布尔(bool)< 整型(int) < 浮点型(float)< 复数(complex)。

2、布尔表达式

在布尔表达式中,非空、非零数字会被视为 True,而空字符串、数字 0、空列表等会被视为 False。在比较运算中使用不同类型的对象,Python会尝试进行隐式类型转换以匹配类型。

3、函数调用

在函数调用时,某些函数(例如:print())可以接受多种类型的参数,并在内部处理这些参数的类型。

(二)显示类型转换

数据类型的显示类型转换(强制类型转换),一般情况下只需要将数据类型作为函数名即可。例如: int()、float()、str() 等函数可以执行显式类型转换。

并非所有类型的数据都可以被转换成其他任意类型。转换是否可行,主要取决于数据本身是否包含足够的信息来表示目标类型。例如:

  • 只包含数字字符的字符串(如"123")可以被转换为一个整数或浮点数,因为这个字符串中只包含纯数字;

  • 非数字字符串(如"hello"),无法被转换为一个整数或浮点数;

  • 列表或元组,可以被转换为集合,但不能被转换为整数,因为集合或列表中的元素无法合理地表示为一个单独的数字。

【小编提示】

虽然Python提供了隐式类型转换,但是显式转换数据类型可以增强代码的可读性和可维护性。

有关显示转换数据类型的内置函数,可以参见菜鸟教程:

https://www.runoob.com/python3/python3-type-conversion.html

二、type() 函数和 isinstance() 函数

(一)type() 函数

type() 函数主要用于获取对象的类型信息,也支持动态创建类,主要用于类型检查。

1、基本语法

type(object)

  • object ,任意数据类型对象;
  • 返回值, 参数 object 的数据类型描述。

其实 type() 函数不仅可以使用一个参数,还可以使用三个参数用于动态创建类,由于涉及面向对象相关知识,后续文章再进行介绍。

2、编程示例

(二)isinstance() 函数

isinstance() 函数,主要用于判定对象是否为指定类型的对象。

1、基本语法

isinstance(object, classinfo)

  • object ,任意数据类型对象;

  • classinfo,可以是直接数据类型名或是由它们组成的元组;

  • 返回值,如果对象的类型与参数二的类型(classinfo)相同则返回 True,否则返回 False。

参数classinfo表示基本类型时采用以下方式:

int,float,bool,complex,str(字符串),list,dict(字典),set,tuple

注意:字符串是 str 而不是 string,字典也是简写 dict。

2、编程示例

(三)type() 函数和 isinstance() 函数的区别

  • type() 函数只考虑当前对象的数据类型,不考虑继承关系;

  • isinstance() 会认为子类是一种父类类型,考虑继承关系;

  • 如果要判断两个类型是否相同推荐使用 isinstance()。

两者区别在大家掌握了面向对象相关知识后,会有深入理解,本文不再深入介绍。

最新文章

随机文章