1 | initial version |

ϕ is a valid Python identifier, see:

```
sage: ϕ = 2
sage: ϕ
2
```

So, you should provide the whole code, what you want to achieve, and what is the problem, so that we can help debugging.

2 | No.2 Revision |

ϕ is a valid Python identifier, see:

```
sage: ϕ = 2
sage: ϕ
2
```

So, you should provide the whole code, what you want to achieve, and what is the problem, so that we can help debugging.

**EDIT**

TL;DR in the last line, this should be:

```
sage: f(x, D, phi, I, w_0)=sola*x + solb
```

Your strategy is as follows: while some libraries do not accept unicode symbols, Python accepts unicode names. So your trick is to let the Python name `ϕ`

point to the symbol `SR.var('phi')`

, and benefit from the fact that `%display latex`

prints the symbol `phi`

as ϕ.

Now, when you write

```
sage: f(x, D, ϕ, I, w_0)=sola*x + solb
```

this not Pythonic (you can not define `f(x) =`

in Python), but we want such statement to be possible for mathematicians, so Sage adds a preparsing layer. See:

```
sage: preparse('f(x, D, ϕ, I, w_0)=sola*x + solb')
⎯⎯𝚝𝚖𝚙⎯⎯=𝚟𝚊𝚛("𝚡,𝙳,ϕ,𝙸,𝚠⎯𝟶");𝚏=𝚜𝚢𝚖𝚋𝚘𝚕𝚒𝚌⎯𝚎𝚡𝚙𝚛𝚎𝚜𝚜𝚒𝚘𝚗(𝚜𝚘𝚕𝚊*𝚡+𝚜𝚘𝚕𝚋).𝚏𝚞𝚗𝚌𝚝𝚒𝚘𝚗(𝚡,𝙳,ϕ,𝙸,𝚠⎯𝟶)
```

As you can see, the symbol ϕ is involved, which is not acceptable for some underlying libraries.

The fist thing is to understand the difference between a symbol, and a Python name, and again the `var('x')`

function is a bit confusing with that respect since it lets the Python name `x`

point to the symbolic variable `SR.var('x')`

.

3 | No.3 Revision |

ϕ is a valid Python identifier, see:

```
sage: ϕ = 2
sage: ϕ
2
```

So, you should provide the whole code, what you want to achieve, and what is the problem, so that we can help debugging.

**EDIT**

TL;DR in the last line, this should be:

```
sage: f(x, D, phi, I, w_0)=sola*x + solb
```

Your strategy is as follows: while some libraries do not accept unicode symbols, Python accepts unicode names. So your trick is to let the Python name `ϕ`

point to the symbol `SR.var('phi')`

, and benefit from the fact that `%display latex`

prints the symbol `phi`

as ϕ.

Now, when you write

```
sage: f(x, D, ϕ, I, w_0)=sola*x + solb
```

this not Pythonic (you can not define `f(x) =`

in Python), but we want such statement to be possible for mathematicians, so Sage adds a preparsing ~~layer. ~~layer to Python. See:

```
sage: preparse('f(x, D, ϕ, I, w_0)=sola*x + solb')
⎯⎯𝚝𝚖𝚙⎯⎯=𝚟𝚊𝚛("𝚡,𝙳,ϕ,𝙸,𝚠⎯𝟶");𝚏=𝚜𝚢𝚖𝚋𝚘𝚕𝚒𝚌⎯𝚎𝚡𝚙𝚛𝚎𝚜𝚜𝚒𝚘𝚗(𝚜𝚘𝚕𝚊*𝚡+𝚜𝚘𝚕𝚋).𝚏𝚞𝚗𝚌𝚝𝚒𝚘𝚗(𝚡,𝙳,ϕ,𝙸,𝚠⎯𝟶)
```

As you can see, the symbol ϕ is involved, which is not acceptable for some underlying libraries.

The fist thing is to understand the difference between a symbol, and a Python name, and again the `var('x')`

function is a bit confusing with that respect since it lets the Python name `x`

point to the symbolic variable `SR.var('x')`

.

4 | No.4 Revision |

ϕ is a valid Python identifier, see:

```
sage: ϕ = 2
sage: ϕ
2
```

**EDIT**

TL;DR in the last line, this should be:

```
sage: f(x, D, phi, I, w_0)=sola*x + solb
```

Your strategy is as follows: while some libraries do not accept unicode symbols, Python accepts unicode names. So your trick is to let the Python name `ϕ`

point to the symbol `SR.var('phi')`

, and benefit from the fact that `%display latex`

prints the symbol `phi`

as ϕ.

Now, when you write

```
sage: f(x, D, ϕ, I, w_0)=sola*x + solb
```

this not Pythonic (you can not define `f(x) =`

in Python), but we want such statement to be possible for mathematicians, so Sage adds a preparsing layer to Python. See:

```
sage: preparse('f(x, D, ϕ, I, w_0)=sola*x + solb')
⎯⎯𝚝𝚖𝚙⎯⎯=𝚟𝚊𝚛("𝚡,𝙳,ϕ,𝙸,𝚠⎯𝟶");𝚏=𝚜𝚢𝚖𝚋𝚘𝚕𝚒𝚌⎯𝚎𝚡𝚙𝚛𝚎𝚜𝚜𝚒𝚘𝚗(𝚜𝚘𝚕𝚊*𝚡+𝚜𝚘𝚕𝚋).𝚏𝚞𝚗𝚌𝚝𝚒𝚘𝚗(𝚡,𝙳,ϕ,𝙸,𝚠⎯𝟶)
```

As you can see, the symbol ϕ is ~~involved, ~~involved (it appears inside the `var`

function), which is not acceptable for some underlying libraries.

The fist thing is to understand the difference between a symbol, and a Python name, and again the `var('x')`

function is a bit confusing with that respect since it lets the Python name `x`

point to the symbolic variable `SR.var('x')`

.

5 | No.5 Revision |

ϕ is a valid Python identifier, see:

```
sage: ϕ = 2
sage: ϕ
2
```

**EDIT**

TL;DR in the last line, this should be:

```
sage: f(x, D, phi, I, w_0)=sola*x + solb
```

`ϕ`

point to the symbol `SR.var('phi')`

, and benefit from the fact that `%display latex`

prints the symbol `phi`

as ϕ.

Now, when you write

```
sage: f(x, D, ϕ, I, w_0)=sola*x + solb
```

this not Pythonic (you can not define `f(x) =`

in Python), but we want such statement to be possible for mathematicians, so Sage adds a preparsing layer to Python. See:

```
sage: preparse('f(x, D, ϕ, I, w_0)=sola*x + solb')
⎯⎯𝚝𝚖𝚙⎯⎯=𝚟𝚊𝚛("𝚡,𝙳,ϕ,𝙸,𝚠⎯𝟶");𝚏=𝚜𝚢𝚖𝚋𝚘𝚕𝚒𝚌⎯𝚎𝚡𝚙𝚛𝚎𝚜𝚜𝚒𝚘𝚗(𝚜𝚘𝚕𝚊*𝚡+𝚜𝚘𝚕𝚋).𝚏𝚞𝚗𝚌𝚝𝚒𝚘𝚗(𝚡,𝙳,ϕ,𝙸,𝚠⎯𝟶)
```

As you can see, the symbol ϕ is involved (it appears inside the `var`

function), which is not acceptable for some underlying libraries.

The fist thing is to understand the difference between a symbol, and a Python name, and again the `var('x')`

function is a bit confusing with that respect since it lets the Python name `x`

point to the ~~symbolic variable ~~symbol `SR.var('x')`

.

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.