PEP 3131: Supporting Non-ASCII Identifiers

Thorsten Kampe thorsten at thorstenkampe.de
Tue May 15 07:53:43 EDT 2007


* Eric Brunel (Tue, 15 May 2007 11:51:20 +0200)
> On Tue, 15 May 2007 11:25:50 +0200, Thorsten Kampe  
> <thorsten at thorstenkampe.de> wrote:
> > * Eric Brunel (Tue, 15 May 2007 10:52:21 +0200)
> >> On Tue, 15 May 2007 09:38:38 +0200, Duncan Booth
> >> <duncan.booth at invalid.invalid> wrote:
> >> > Recently there has been quite a bit of publicity about the One Laptop  
> >> Per
> >> > Child project. The XO laptop is just beginning rollout to children and
> >> > provides two main programming environments: Squeak and Python. It is  
> >> an
> >> > exciting thought that that soon there will be millions of children in
> >> > countries such as Nigeria, Brazil, Uruguay or Nepal[*] who have the
> >> > potential to learn to program, but tragic if the Python community is  
> >> too
> >> > arrogant to consider it acceptable to use anything but English and  
> >> ASCII.
> >>
> >> You could say the same about Python standard library and keywords then.
> >
> > You're mixing apples and peaches: identifiers (variable names) are
> > part of the user interface for the programmer and free to his
> > diposition.
> 
> So what? Does it mean that it's acceptable for the standard library and  
> keywords to be in English only, but the very same restriction on  
> user-defined identifiers is out of the question?

Yes.

> Why? If I can use my own  
> language in my identifiers, why can't I write:
> 
> classe MaClasse:
>    définir __init__(moi_meme, maListe):
>      moi_meme.monDictionnaire = {}
>      pour i dans maListe:
>        moi_meme.monDictionnaire[i] = Rien
> 
> For a French-speaking person, this is far more readable than:

Because keywords are not meant meant to extended or manipulated or 
something 	similar by the programmers. Keywords are well known and only 
a limited set of words. That's why you can't use keywords as 
identifiers.

On the contrary identifiers are for the user's disposition. The 
convention for naming them is: give them the name that makes the most 
sense in relation to the code. In a lot of cases this will mean 
english names and ASCII charset. And in some restricted environments 
this means naming identifiers with terms from the native language. And 
in this case it makes no sense at all to restrict these people to use 
ASCII characters to write words in their own language.

There really is no difference to allow strings or comments in non-
english languages and non-ASCII characters.

Thorsten



More information about the Python-list mailing list