正文
Python全栈之路----类型转换
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
显式转换
int(x [,base]) ⇒ 将x转换为一个十进制的整数
long(x [,base]) ⇒ 将x转换为一个十进制的长整数
float(x) ⇒ 将x转换为一个浮点数
str(object) ⇒ 转换为字符串
repr(object) ⇒ 转换为表达式字符串
eval(str) ⇒ 用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(seq) ⇒ 将序列seq转换为一个元组
list(seq) ⇒ 将序列seq转换为一个列表
chr(x ) ⇒ 将一个整数转换为一个字符
unichr(x ) ⇒ 将一个整数转换为Unicode字符
ord(x ) ⇒ 将一个字符转换为它的整数值
hex(x ) ⇒ 将一个整数转换为一个十六进制字符串
oct(x ) ⇒ 将一个整数转换为一个八进制字符串
Non-String转换成String类型
1.List -> String
>>> li = ['My','name','is','Jmilk']
>>> strLi = str(li)
>>> print(strLi)
['My', 'name', 'is', 'Jmilk']
>>> type(strLi)
<class 'str'>
2.Tuple -> String
>>> tup = ('my','name','is','jmilk')
>>> Tup = str(tup)
>>> Tup
"('my', 'name', 'is', 'jmilk')"
>>> type(Tup)
<class 'str'>
3.Dictionary -> String
>>> dic = {'name':'Jmilk','age':23}
>>> Dic = str(dic)
>>> Dic
"{'name': 'Jmilk', 'age': 23}"
>>> type(Dic)
<class 'str'>
str()和repr()的区别
(1)repr()支持eval(repr(object)) == object。
(2)str()函数的结果适合用户阅读,repr()的结果适合python解析器阅读,其中有一些Python解析器能够识别的数据细节,但这些细节一般对用户是多余的。
(3)repr()转换后的String对象可以通过求值运算eval()来还原到转换之前的对象,str()通常不需要eval()去处理。
>>> name = ('alex\n,reic\n,jane\n')
>>> print(str(name))
alex
,reic
,jane>>> print(repr(name))
'alex\n,reic\n,jane\n'
eval():
(1)能结合repr()函数将一个经过转换为Strng类型后的对象还原为转换之前的对象类型。
(2)eval()也被称为求值运算,可以将字符串str当成有效的表达式来求值并返回计算结果。
>>> name = ('My name is Jmilk\n')
>>> name1 = str(name)
>>> name1
'My name is Jmilk\n'
>>> name2 = repr(name)
>>> name2
"'My name is Jmilk\\n'"
>>> eval(name1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1
My name is Jmilk
^
SyntaxError: invalid syntax
>>> eval(name2)
'My name is Jmilk\n'
eval(str(Object))可能会报错,无法还原为原来的对象型。而eval(repr(object))却可以还原,下面例子:
>>> name = ('My','name','is','Jmilk\n')>>> repr(name)
"('My', 'name', 'is', 'Jmilk\\n')">>> eval(repr(name))
('My', 'name', 'is', 'Jmilk\n')>>> type(eval(repr(name)))
<class 'tuple'>
总结:str()函数主要是为了让人能够更好的阅读其内容,而rper()除了转换为String类型外,还能够被Python解析器识别其数据细节,从而repr()转换后的字符串能够被当作有效表达式来处理。
注意:eval()函数最主要的功能是能够将字符串中有效的表达式进行计算并返回一个对象。如下:
>>> sum = '100 + 10'
>>> eval(sum)
110
Non-int转换成int类型
int(x[, base=10]) -> int or long base:指定进制; x:通常为一个String ;base指定了x的进制。
1.float -> int 向下取整
>>> int(10.9)
10
2.string ->int int('a',b) a为要转换的数字,b为a的进制,b必须标明,不然会出错。
>>> int('0xa',16)
10
>>> int('',2)
10
>>> int('0xa')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '0xa'
Non-float转换成float
float(x) -> floating point number
Convert a string or number to a floating point number, if possible.
可以接收Int和String类型参数,float()函数在连接数据库操作会被经常使用。当参数为String时,只能出现数字和一个点额任意组合,若出现多个点号,则会出现异常。
>>> float(10)
10.0>>> float('')
100.0>>> float('.98')
0.98>>> float('.123.')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: '.123.'
Non-list转换成list
list(iterable) -> new list initialized from iterable’s items
使用迭代器中的元素生成一个新的列表
1.string -> list