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

2019-04-16  本文已影响0人  吴朝佳

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

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

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

# -*- coding: UTF-8 -*-
str = '100'
int(str)
# 相当于
int(str, base=10)
>> 100
# -*- 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)

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

3. float(x)

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

4. complex(real, imag)

# -*- coding: UTF-8 -*-
complex(1, 2)
>> (1+2j)
# -*- 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)

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

# -*- coding: UTF-8 -*-
obj = {'name': 'Sampson', 'age': 18}
repr(obj)
>> "{'name': 'Sampson', 'age': 18}"
# -*- 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)

# -*- coding: UTF-8 -*-
eval(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)

# -*- coding: UTF-8 -*-
tuple(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)

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

10. set(s)

# -*- coding: UTF-8 -*-
set([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)

# -*- coding: UTF-8 -*-
dict(kwarg)
dict(mapping, kwarg)
dict(iterable, kwarg)
# -*- 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)

# -*- coding: UTF-8 -*-
frozenset([iterable])
# -*- 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)

# -*- coding: UTF-8 -*-
chr(x)
# -*- 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)

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

15. ord(x)

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

16. hex(x)

# -*- coding: UTF-8 -*-
hex(x)
# -*- 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)

# -*- coding: UTF-8 -*-
oct(x)
# -*- coding: UTF-8 -*-
print oct(10)
>> '012'
print oct(20)
>> '024'
print oct(15)
>> '017'
上一篇下一篇

猜你喜欢

热点阅读