1
我搜索代碼,其中FloorDiv甚至股利,ADD,SUB等的定義,但我沒有定義,就像我想要的。Python其中是編譯器/解析器中FloorDivide的定義/源代碼?
在Python/ast.c:
case DOUBLESLASH:
return FloorDiv;
case '/':
if (STR(n)[1] == '/')
return FloorDiv;
else
return Div;
在Python/compile.c:
case BINARY_FLOOR_DIVIDE:
case BINARY_TRUE_DIVIDE:
return -1;
case INPLACE_FLOOR_DIVIDE:
case INPLACE_TRUE_DIVIDE:
return -1;
在分析器/ Python.asdl:
operator = Add | Sub | Mult | MatMult | Div | Mod | Pow | LShift
| RShift | BitOr | BitXor | BitAnd | FloorDiv
語法/語法:
arith_expr: term (('+'|'-') term)*
term: factor (('*'|'@'|'/'|'%'|'//') factor)*
http://eli.thegreenplace.net/2010/06/30/python-internals-adding-a-new-statement-to-python/幫我找論文的地方,但不是我想要的。
謝謝!這是完美的答案! –
只是另一個小問題,其中Cpython連接字符串 –
看起來像Objects/unicodeobject.c(PyUnicode_Append)和Python/ceval.c(unicode_concatenate)的組合。無論出於什麼原因(可能是性能),unicode類型都沒有定義'__add__'或'__iadd__',但是這些都是在ceval中明確處理的。 –