有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。
以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。
函数 | 描述 |
---|---|
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))
>> <type 'str'> # 字符串
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'