訪問 int literals 屬性

你可能聽說 Python 中的所有內容都是物件,甚至是文字。這意味著,例如,7 也是一個物件,這意味著它具有屬性。例如,其中一個屬性是 bit_length。它返回表示呼叫它所需的位數。

x = 7
x.bit_length()
# Out: 3

看到上面的程式碼有效,你可能會直觀地認為 7.bit_length() 也可以正常執行,但卻發現它提出了一個問題。為什麼?因為直譯器需要區分屬性訪問和浮動數(例如 7.27.bit_length())。它不能,這就是引發異常的原因。

有幾種方法可以訪問 int 文字的屬性:

# parenthesis
(7).bit_length()
# a space
7 .bit_length()

使用兩個點(如此 7..bit_length())在這種情況下不起作用,因為它建立了 float 文字,而浮點數沒有 bit_length() 方法。

當訪問 float 文字屬性時,這個問題不存在,因為 interperter智慧足以知道 float 文字不能包含兩個 .,例如:

7.2.as_integer_ratio()
# Out: (8106479329266893, 1125899906842624)