Take the 2-minute tour ×

I want to build a Python function that calculates,

alt text

and would like to name my summation function Σ. In a similar fashion, would like to use Π for product, and so on. I was wondering if there was a way to name a python function in this fashion?

def Σ (..):

That is, does Python support unicode identifiers, and if so, could someone provide an example for it?


Original motivation for this was a piece of Clojure code I saw today that looks like,

(defn entropy [X]

where Σ is a macro defined as,

(defmacro Σ
    ... )

and I thought that was pretty cool.

BTW, to address a couple of comments about readability - with a lot of stats/ML code for instance, being able to compose operations with symbols would be really helpful. (Especially for really complex integrals et al)

φ(z) = ∫(N(x|0,1,1), -∞, z)


Phi(z) = integral(N(x|0,1,1), -inf, z)

or even just the lambda character for lambda()!

share|improve this question
Although not as cool, Python's summation function is pretty elegant: sum() –  Nick Presta Apr 15 '10 at 23:04
agree. I meant more for other things here, like integrals, greek letters, et al. –  viksit Apr 15 '10 at 23:22
Sounds like a horrible idea for ease of input (presumably $\sum$ wouldn't work, right?) –  Benjamin Bannier Apr 15 '10 at 23:34
Maybe you want to have a look at Fortress which allows Unicode and TeX style notation. –  unbeknown Apr 16 '10 at 8:09
“Sounds like a horrible idea for ease of input” — depends what keyboard shortcuts you’ve got, doesn’t it? Curly quotes, like the kind I used at the start of this comment, are a bit of a drag to type by default in Windows (I believe), but have decent shortcuts on the Mac. If you do a lot of mathy programming, you could configure shortcuts to make the typing easy. –  Paul D. Waite Apr 16 '10 at 9:30

4 Answers 4

up vote 21 down vote accepted

(I think it’s pretty cool too, that might mean we’re geeks.)

You’re fine to do this with the code you have above in Python 3. (It works in my Python 3.1 interpreter at least.) See:

But in Python 2, identifiers can only be ASCII letters, numbers and underscores.

share|improve this answer
… "letters" meaning here "ASCII letters". –  EOL Jul 5 '14 at 4:23

According to is it bad, you can use some unicode characters, but not all: You are restricted to characters identified as letters.

α = 3
Σ = sum
import math
√ = math.sqrt
  File "", line 1
    √ = 3
SyntaxError: invalid character in identifier

Besides: I think it is very cool to be able to use unicode as identifiers - and I wish, i could use all.

I use the neo keyboard layout, which gives me greek and math symbols on extra layers:


share|improve this answer
Also, there are often distinct versions of characters that are also Greek letters. For example, the Greek capital sigma is U+03A3, while the math sigma is U+1D6BA, U+1D6F4, U+1D72E, U+1D768, or U+1D7A2 depending on styling. Similarly, Greek capital omega is U+03A9, math omegas start at U+1D6C0, and the Ohms symbol is U+2126. –  Mike DeSimone Jun 19 '14 at 12:23
Another nice way to enter most symbols is the compose key, e.g. on Windows via WinCompose –  Tobias Kienzler Feb 23 at 13:03

Python 2.x does not support unicode identifiers, and consequently does not support Σ as an identifier. Python 3.x does support unicode identifiers, although many people will get cross if they have to edit source files with, for example, identifiers A and Α (latin A and greek capital alpha.) Sigma is often readable enough, but still, not as readable as the word sigma, so why bother?

share|improve this answer
I think readability of words versus symbols depends on context. When I’m reading something mathy, I find symbols (e.g. x + y) more readable than the wordy equivalents you’d get in, say, AppleScript (e.g. add x to y). Symbols are terser, and generally let you get by on shape recognition alone, which I think is easier on the brain than reading. I don’t do enough mathy stuff to have felt the need to add a sigma sign to my code though. –  Paul D. Waite Apr 15 '10 at 23:05
Sure, there are plenty of cases where symbols are more readable than words. Or where non-ASCII characters express things better. I was mostly commenting on the fact that an identifier consisting of a single sigma isn't really an improvement over the word 'sigma' :) –  Thomas Wouters Apr 15 '10 at 23:10
That doesn't look any more readable with unicode identifiers to me. –  Thomas Wouters Apr 15 '10 at 23:28
“That doesn't look any more readable with unicode identifiers to me.” — It does look more similar to the equation posted at the top of the question though. If someone was used to reading equations like that, mightn’t they find the symbol-y Python code more readable too? –  Paul D. Waite Apr 16 '10 at 9:31
@Paul: sure, readability is always subjective. The audience is important. Which is why you need to consider the audience more than your own preferences. It's easy if you're always going to be your own entire audience, of course, but frequently things that start out that way end up in a wider distribution, and with a wider set of contributors. –  Thomas Wouters Apr 16 '10 at 10:32

It's worth pointing out that Python 3 does support Unicode identifiers, but only allows letter or number like symbols (see http://docs.python.org/3.3/reference/lexical_analysis.html#identifiers for full details). That's why Σ works (remember that it's a Greek letter, not just a math symbol), but √ doesn't.

share|improve this answer

Your Answer


