[英]Python __add__ magic method with integers
當我正在嘗試這個時:
>>> "a".__add__("b")
'ab'
這是工作。 但是這個
>>> 1.__add__(2)
SyntaxError: invalid syntax
不管用。 這是有效的:
>>> 1 .__add__(2) # notice that space after 1
3
這是怎么回事? 是否與變量命名規則有關,python 是否認為我在不使用空間時嘗試創建變量?
Python 解析器故意保持簡單和簡單。 當它看到1.
時,它認為你在一個浮點數的中間,並且1._
不是一個有效的數字(或者更准確地說, 1.
是一個有效的浮點數,你不能跟隨一個值_
: "a" __add__("b")
也是一個錯誤)。 因此,任何可以清楚地表明.
不是數字的一部分有幫助:在點之前有一個空格,正如您所發現的(因為在數字中找不到空格,Python 放棄了浮點數的想法並采用整數語法)。 括號也有幫助: (1).__add__(2)
。 添加另一個點也可以: 1..__add__(2)
(這里, 1.
是一個有效數字,然后.__add__
做通常的事情)。
python 詞法解析器嘗試將 integer 后跟一個點解釋為浮點數。 為了避免這種歧義,您必須添加一個額外的空格。
為了比較,相同的代碼在 double 上沒有問題:
>>> 4.23.__add__(2)
6.23
如果將 int 放在括號中,它也可以:
>>> (5).__add__(4)
9
當您使用1.
解釋器認為您開始編寫浮點數時(您可以在 IDE(至少 Pycharm)中看到點是藍色的,而不是白色的)。 空格告訴它將1.
視為一個完整的數字1.0
。 1..__add__(2)
也可以解決問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.