Python中的类型转换详解

目录 

1.隐式类型转换

2.显式类型转换

3.显式类型转换要点

1.隐式类型转换

   Python的变量不是固定的,那么它会根据变量当前值在运行时决定的,可以通过内置函数type(变量)来查看其类型,这种方式就是隐式转换,也称为自动转换。

具体代码实现如下:

var1 = 10
var2 = 1.3
var3 = "你好"
print(type(var1))
print(type(var2))
print(type(var3))

#运行结果如下
<class 'int'>
<class 'float'>
<class 'str'>

从以上的代码可以看出,var1的变量当前值为整形,var2变量当前值为浮点类型,var3变量当前值为字符串类型,所以转换出来的输出也是相应的类型。

隐式转换时,在运算时,数据类型会向高精度自动转换,代码如下

var4 = 10
var5 = 1.2
var6 = var4 +var5   #11.2 float
print("var6=","var6,var6的类型:",type(var6))  #11.2 float

#运行结果如下:
var6= var6,var6的类型: <class 'float'>

这串代码就说明了问题,将整型的数据,转换成Var6浮点数了,为什么会出现这种情况呢,因为var6的精度更高。

2.显式类型转换

     1如果需要对变量数据类型进行转换,只需要对将数据类型作为函数名即可,这种方式就是显式转换,或者说叫强制转换

在下面的内置函数中可以完成数据类型之间的转换,函数会返回一个新的对象/值,就是强制转换的结果。

函数 描述
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转换为一个列表

显式转换代码

i = 10
j = float(i)
print("j的类型:",type(j),"j =",j)

#运行结果:
j的类型: <class 'float'> j = 10.0

这个就是将整型转换成浮点型,

  1. 这里使用了 float(i),这是一个显式类型转换操作。它的作用是将 i 的值从整数转换为浮点数。
  2. 即使 i 的值是一个整数(如 10),float(i) 也会将其转换为浮点数形式(如 10.0)。

  3. 浮点数的特性

  4. 浮点数是 Python 中的一种数据类型,用于表示带小数点的数。

  5. 即使一个浮点数没有小数部分(如 10.0),它仍然是浮点数类型,而不是整数类型。

  6. type() 函数的作用

  7. type(j) 返回的是变量 j 的类型。由于 j 是通过 float(i) 转换得到的,所以它的类型是 float。

3.显示类型转换要点:

 不管什么样的整型int,float都可以转换成str,tr(x)将对象x转换为字符串。

代码实现如下:

n1 = 100
n2 = 234.98
print(str(n1))
print(str(n2))
#运行结果:
100
234.98

 看到这串代码会有一个误区,这输出的还是整型和浮点数啊,没有转换成字符串类型,为什么会出现这个误区呢,那是因为当你使用 str() 函数将数字转换为字符串时,字符串的内容是数字的文本表示形式。print() 函数会将字符串的内容原样输出,不会添加额外的引号或其他标记。

因此,当你打印字符串串 "100" 和 "234.98" 时,输出结果是:

100

234.98

下面为了验证这个结论是正确的,继续看以下代码:

n1 = 100
n2 = 234.98
s1 = str(n1)
s2 = str(n2)
print("s1 的类型:", type(s1), "s1 =", s1)
print("s2 的类型:", type(s2), "s2 =", s2)

#运行结果如下:

s1 的类型: <class 'str'> s1 = 100
s2 的类型: <class 'str'> s2 = 234.98

由此可见,转换完成的类型就是字符串类型,而不是看到的整型和浮点类型。

4.变量的强制转换不会改变原变量数据类型

对一个变量进行强制转换,会返回一个数据/值,强制转换后,并不会影响原变量的数据类型,也就是说不影响原变量指向的数据/值的数据类型,如下图1所示

                                                                图1

代码实现如下:

a = 10
print("a的类型:",type(a),"a的值:",a)
b = float(a)
print("b的类型:",type(b),"b的值:",b)
c = str(a)
print("c的类型:",type(c),"c的值:",c)

#运行结果:
a的类型: <class 'int'> a的值: 10
b的类型: <class 'float'> b的值: 10.0
c的类型: <class 'str'> c的值: 10

 结合代码和图片,由此看来,强制转换之后,并没有改变原变量的数据类型。

作者:追梦撩编程

物联沃分享整理
物联沃-IOTWORD物联网 » Python中的类型转换详解

发表回复