# Sage seems to accept a Python nonsense. Why ?

Seen there :

```
sage: var("r")
r
sage: type(2r^2)
<class 'int'>
```

I do not understand what meaning the `2r^2`

can have for the sage interpreter. The preparser does not try to interpret it,transforms `^`

in `**`

, adds a type to the *second* `2`

, *ignores* the first one and ** deletes the r** :

```
sage: preparse('2r^2')
'2**Integer(2)'
```

I do not understand why.

Furthermore :

```
sage: Integer(2r^2)
4
```

The `int`

interpretation is genuine...

```
sage: (2r^2).n()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
Cell In[13], line 1
----> 1 (2**Integer(2)).n()
AttributeError: 'int' object has no attribute 'n'
```

... and consistent. But I still do not understand why this is not rejected.

This seems specific to Sage's symbolic variables ; counter-examples :

```
sage: import sympy
sage: t=sympy.symbols("t")
sage: 2t^2
Cell In[23], line 1
2t**Integer(2)
^
SyntaxError: invalid decimal literal
sage: u=function("u")
sage: 2u^2
Cell In[27], line 1
2u**Integer(2)
^
SyntaxError: invalid decimal literal
```

This behavior is what I'd expect in the `r`

case.

Any explanation welcome.

BTW, shouldn't we consider this as a bug ?