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__()返回的值。
本文(完)
新聞熱點
疑難解答