Python初学者入门随笔 03 Python 数据类型转换

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

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

函数 描述
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'

你可能感兴趣的:(Python初学者入门随笔 03 Python 数据类型转换)