訪問 int literals 屬性
你可能聽說 Python 中的所有內容都是物件,甚至是文字。這意味著,例如,7
也是一個物件,這意味著它具有屬性。例如,其中一個屬性是 bit_length
。它返回表示呼叫它所需的位數。
x = 7
x.bit_length()
# Out: 3
看到上面的程式碼有效,你可能會直觀地認為 7.bit_length()
也可以正常執行,但卻發現它提出了一個問題。為什麼?因為直譯器需要區分屬性訪問和浮動數(例如 7.2
或 7.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)