簡體   English   中英

Python __add__ 帶整數的魔術方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM