有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。

以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。

函数

描述

int(x, base)

将x转换为一个整数

long(x, base)

将x转换为一个长整数

float(x)

将x转换到一个浮点数

complex(real, imag)

创建一个复数

str(object)

将对象 object 转换为字符串

repr(object)

将对象 object 转换为表达式字符串

eval(str)

用来计算在字符串中的有效 Python 表达式,并返回一个对象

tuple(s)

将序列 s 转换为一个元组

list(s)

将序列 s 转换为一个列表

set(s)

转换为可变集合

dict(d)

创建一个字典。d 必须是一个序列 (key,value) 元组。

frozenset(s)

转换为不可变集合

chr(x)

将一个整数转换为一个字符

unichr(x)

将一个整数转换为 Unicode 字符

ord(x)

将一个字符转换为它的整数值

hex(x)

将一个整数转换为一个十六进制字符串

oct(x)

将一个整数转换为一个八进制字符串

1. int(x, base)

描述

int(x, base) 函数用于将一个字符串或数字转换为整型。

语法

# -*- coding: UTF-8 -*-
str = '100'
int(str)
# 相当于
int(str, base=10)
>> 100

参数

x -- 字符串或数字。

base -- 进制数,默认十进制。

返回值

返回整型数据。

实例

# -*- coding: UTF-8 -*-
int() # 不传入参数时,得到结果0
>> 0
int(3)
>> 3
int(3.6) # 舍去浮点数
>> 3
int('12', 16) # 如果是带参数base的话,12 要以字符串的形式进行输入,16 为 16进制
>> 18
int('0xa', 16)
>> 10
int('10', 8)
>> 8

2. long(x, base)

描述

long(x, base) 函数将数字或字符串转换为一个长整型。

语法

# -*- coding: UTF-8 -*-
str = '100'
long(str)
# 相当于
long(str, base=10)
>> 100L

参数

x -- 字符串或数字。

base -- 可选,进制数,默认十进制。

返回值

返回长整型数。

实例

# -*- coding: UTF-8 -*-
long()
>> 0L
long(1)
>> 1L
long('123')
>> 123L

3. float(x)

描述

float(x) 函数用于将整数和字符串转换成浮点数。

语法

# -*- coding: UTF-8 -*-
num = 100
float(num)
>> 100.0

参数

x -- 整数或字符串

返回值

返回浮点数。

实例

# -*- coding: UTF-8 -*-
float(1)
>> 1.0
float(112)
>> 112.0
float(-123.6)
>> -123.6
float('123')
>> 123.0

4. complex(real, imag)

描述

complex(real, imag) 函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。

语法

# -*- coding: UTF-8 -*-
complex(1, 2)
>> (1+2j)

参数

real -- int,long,float 或 字符串;

imag -- int,long,float;

返回值

返回一个复数。

实例

# -*- coding: UTF-8 -*-
complex(1, 2)
>> (1+2j)
complex(1) # 数字
>> (1+0j)
complex("1") # 当做字符串处理
>> (1+0j)

# 注意:这个地方在"+"号两边不能有空格,也就是不能写成"1 + 2j",应该是"1+2j",否则会报错

complex("1+2j")
>> (1+2j)

5. str(object)

描述

str(object) 函数将对象转化为适于人阅读的形式。

语法

# -*- coding: UTF-8 -*-
obj = {'name': 'Sampson', 'age': 18}
str(obj)
# 相当于
str(object=obj)
>> "{'name': 'Sampson', 'age': 18}"

参数

object -- 对象。

返回值

返回一个对象的string格式。

实例

# -*- coding: UTF-8 -*-
s = 'RUNOOB'
str(s)
>> 'RUNOOB'
dict = {'runoob': 'runoob.com', 'google': 'google.com'}
str(dict)
>> "{'runoob': 'runoob.com', 'google': 'google.com'}"

6. repr(object)

描述

repr(object) 函数将对象转化为供解释器读取的形式。

语法

# -*- coding: UTF-8 -*-
obj = {'name': 'Sampson', 'age': 18}
repr(obj)
>> "{'name': 'Sampson', 'age': 18}"

参数

object -- 对象。

返回值

返回一个对象的 string 格式。

实例

# -*- coding: UTF-8 -*-
s = 'RUNOOB'
repr(s)
>> "'RUNOOB'"
dict = {'runoob': 'runoob.com', 'google': 'google.com'}
repr(dict)
>> "{'runoob': 'runoob.com', 'google': 'google.com'}"

细心的朋友可能已经发现了,str(object) 和 repr(object) 无论是用法还是最终的结果都近乎一致,那么事实是否是如此呢?

带着这个问题,我们试着去 Python 的标准库中找找答案。下面我们就来看看 datetime.date 这个类是怎么在使用这两个方法的。

# -*- coding: UTF-8 -*-
import datetime
today = datetime.date.today()
str(today)
>> '2019-04-09'
repr(today)
>> 'datetime.date(2019, 4, 9)'

至此,我们有个初步的答案。

str(object) 的返回结果可读性强。也就是说,str(object) 的意义是得到便于人们阅读的信息,就像上面的 '2019-04-09' 一样。

repr(object) 的返回结果应更准确。怎么说,repr(object) 存在的目的在于调试,便于开发者使用。细心的读者会发现将 repr(object) 返回的方式直接复制到命令行上,是可以直接执行的。

7. eval(str)

描述

eval(str) 函数用来执行一个字符串表达式,并返回表达式的值。

语法

# -*- coding: UTF-8 -*-
eval(expression[, globals[, locals]])

参数

expression -- 表达式。

globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。

locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。

返回值

返回表达式计算结果。

实例

# -*- coding: UTF-8 -*-
x = 7
eval('3 * x')
>> 21
eval('pow(2,2)')
>> 4
eval('2 + 3')
>> 5
n = 81
eval("n + 4")
>> 85

8. tuple(s)

描述

tuple(s) 函数将列表转换为元组。

语法

# -*- coding: UTF-8 -*-

tuple(seq)

参数

seq -- 要转换为元组的序列。

返回值

返回元组。

实例

# -*- coding: UTF-8 -*-
tuple([1, 2, 3, 4])
>> (1, 2, 3, 4)
tuple({1: 2, 3: 4}) # 针对字典 会返回字典的key组成的tuple
>> (1, 3)
tuple((1, 2, 3, 4)) # 元组会返回元组自身
>> (1, 2, 3, 4)

9. list(s)

描述

list(s) 方法用于将元组转换为列表。

语法

# -*- coding: UTF-8 -*-
list(tup)

参数

tup -- 要转换为列表的元组。

返回值

返回列表。

实例

# -*- coding: UTF-8 -*-
aTuple = (123, 'xyz', 'zara', 'abc')
list(aTuple)
>> [123, 'xyz', 'zara', 'abc']

10. set(s)

描述

set(s) 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

语法

# -*- coding: UTF-8 -*-
set([iterable])

参数

iterable -- 可迭代对象对象。

返回值

返回新的集合对象。

实例

# -*- coding: UTF-8 -*-
x = set('runoob')
y = set('google')
print x, y
>> (set(['b', 'r', 'u', 'o', 'n']), set(['e', 'o', 'g', 'l'])) # 重复的被删除
print x & y
>> set(['o']) # 交集
print x | y
>> set(['b', 'e', 'g', 'l', 'o', 'n', 'r', 'u']) # 并集
print x - y
>> set(['r', 'b', 'u', 'n']) # 差集

11. dict(d)

描述

dict(d) 函数用于创建一个字典。

语法

# -*- coding: UTF-8 -*-
dict(kwarg)
dict(mapping, kwarg)
dict(iterable, kwarg)

参数

kwargs -- 关键字

mapping -- 元素的容器。

iterable -- 可迭代对象。

返回值

返回一个字典。

实例

# -*- coding: UTF-8 -*-
dict() # 创建空字典
>> {}
dict(a='a', b='b', t='t') # 传入关键字
>> {'a': 'a', 'b': 'b', 't': 't'}
dict(zip(['one', 'two', 'three'], [1, 2, 3])) # 映射函数方式来构造字典
>> {'three': 3, 'two': 2, 'one': 1}
dict([('one', 1), ('two', 2), ('three', 3)]) # 可迭代对象方式来构造字典
>> {'three': 3, 'two': 2, 'one': 1}

12. frozenset(s)

描述

frozenset(s) 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。

语法

# -*- coding: UTF-8 -*-
frozenset([iterable])

参数

iterable -- 可迭代的对象,比如列表、字典、元组等等。

返回值

返回新的 frozenset 对象,如果不提供任何参数,默认会生成空集合。

实例

# -*- coding: UTF-8 -*-
a = frozenset(range(10)) # 生成一个新的不可变集合
print a
>> frozenset([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
b = frozenset('runoob') # 创建不可变集合
print b
>> frozenset(['b', 'r', 'u', 'o', 'n'])

13. chr(x)

描述

chr(x) 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。

语法

# -*- coding: UTF-8 -*-
chr(x)

参数

x -- 可以是10进制也可以是16进制的形式的数字。

返回值

返回值是当前整数对应的 ASCII 字符。

实例

# -*- coding: UTF-8 -*-
print chr(0x30), chr(0x31), chr(0x61) # 十六进制
>> 0 1 a
print chr(48), chr(49), chr(97) # 十进制
>> 0 1 a

14. unichr(x)

描述

unichr(x) 函数 和 chr(x) 函数功能基本一样, 只不过是返回 unicode 的字符。

语法

# -*- coding: UTF-8 -*-
unichr(x)

参数

x -- 可以是10进制也可以是16进制的形式的数字。

返回值

返回 unicode 的字符。

实例

# -*- coding: UTF-8 -*-
print unichr(97)
>> 'a'
print unichr(98)
>> 'b'
print unichr(99)
>> 'c'

15. ord(x)

描述

ord(x) 函数是 chr(x) 函数(对于8位的ASCII字符串)或 unichr(x) 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。

语法

# -*- coding: UTF-8 -*-
ord(x)

参数

x -- 字符。

返回值

返回值是对应的十进制整数。

实例

# -*- coding: UTF-8 -*-
print ord('a')
>> 97
print ord('b')
>> 98
print ord('c')
>> 99

16. hex(x)

描述

hex(x) 函数用于将10进制整数转换成16进制,以字符串形式表示。

语法

# -*- coding: UTF-8 -*-
hex(x)

参数

x -- 10进制整数

返回值

返回16进制数,以字符串形式表示。

实例

# -*- coding: UTF-8 -*-
print hex(255)
>> '0xff'
print hex(-42)
>> '-0x2a'
print hex(1L)
>> '0x1L'
print hex(12)
>> '0xc'
print type(hex(12))
>> # 字符串

17. oct(x)

描述

oct(x) 函数将一个整数转换成8进制字符串。

语法

# -*- coding: UTF-8 -*-
oct(x)

参数

x -- 整数。

返回值

返回8进制字符串。

实例

# -*- coding: UTF-8 -*-
print oct(10)
>> '012'
print oct(20)
>> '024'
print oct(15)
>> '017'