ascii()是Python内置的一个函数,其作用是返回一个对象的字符串表示形式,但字符串中只包含ASCII编码的字符,而非ASCII编码的字符将使用以反斜杠“/”形式的转义字符表示。
该函数在内部调用repr()函数来实现的,并在输出前使用转义字符来转义非ASCII字符。
官方文档给出的ascii()语法格式如下:
ascii(object)
该函数的参数可以是任何原始数据类型或一个对象。
该函数的返回值是一个字符串,该字符串中包含了ASCII编码的可打印字符,而非ASCII编码的字符将以转义字符的形式来显示。
#参数是数值
n1 = 123
print(ascii(n1))
n2 = 12.3
print(ascii(n2))
n3 = 0b1100
print(ascii(n3))
n4 = 3.1 + 4.5j
print(ascii(n4))
#参数是布尔值
b1 = True
print(ascii(b1))
b2 = n1<0
print(ascii(b2))
#参数是字符串
s1 = "abc ABC"
print(ascii(s1))
s2 = "abc/nABC"
print(ascii(s2))
s3 = "武林网VEVB"
print(ascii(s3))
输出结果如下
123
12.3
12
(3.1+4.5j)
True
False
'abc ABC'
'abc/nABC'
'/u7fd4/u5b87/u4eadIT/u4e50/u56ed'
从上面的输出结果中可以看出:对于数值类型,非十进制的转换成十进制后输出,其它的原样输出,对于布尔类型的也是如此。字符串中的非ASCII编码的字符将以“/”开始的转义字符形式输出。
#参数是列表
lst = ['优雅','A',123,'æ']
print(ascii(lst))
#参数是元组
t = ('优雅','A','a','æ')
print(ascii(t))
#参数是字典
d = {'字符':'优雅','A':'â'}
print(ascii(d))
输出结果:
['/u4f18/u96c5', 'A', 123, '/xe6']
('/u4f18/u96c5', 'A', 'a', '/xe6')
{'/u5b57/u7b26': '/u4f18/u96c5', 'A': '/xe2'}
从上面的输出结果可以看出:参数是列表的话,仍然输出列表的字符串,但列表中的元组如是非ASCII编码的字符的话,将以转义字符的形式输出。
如果在自定义对象中定义了__repr__()函数的话,ascii()函数同样也可以使用到该对象中。
看下面的例子。
class Student:
name=""
def __init__(self,name):
self.name = name
class Teacher:
name = ""
def __init__(self,name):
self.name = name
def __repr__(self):
return self.name
S = Student("王涛")
print(ascii(S))
T = Teacher("苏炳添")
print(ascii(T))
输出结果如下:
<__main__.Student object at 0x0000000002DB4670>
/u82cf/u70b3/u6dfb
从上面的例子和结果可以得知:如果自定义对象中没有定义__repr__()函数的话,输出的内容如结果中的第一行的形式;如果定义了__repr__()函数的话,ascii()函数的输出就是__repr__()返回的值。
本文(完)
新闻热点
疑难解答