I would like to see something like %init or &init to be converted to
__init__ behind the scenes.
Unfortunately -- or perhaps fortunately -- % clashes with the already
established uses of % as the modulus operator for numbers and the
interpolation operator for strings.
'hello world'
The last thing I want is to have to study code carefully to try to work
out whether %name means __name__ or %name.
Similarly for &, the bitwise and operator:
8
And $something to be converted to self.something.
Well, at least $ is unused in Python at the moment. That's a point in the
idea's favour. It's a tiny point, but a point.
But, unfortunately, most Python people would consider
this ugly
Yes.
just because Perl uses too much syntactic sugar
No. It's because Perl uses too much *line noise*, punctuation characters
instead of syntax.
and anything
Perl-like is considered ugly in Python community. So, unless Perl die, I
believe that Python will remain sugar-free.
Python has lots of syntactic sugar. Some examples:
"class Foo" is syntactic sugar for a call to the new.classobj() function.
Both "def foo():" and "lambda :" are syntactic sugar for a call to the
new.function() function.
Double-underscore method names are syntactic sugar.
Decorators are syntactic sugar.
Generator expressions and list comprehensions are syntactic sugar.
Dict, tuple and list literals {a: b} (a, b) [a, b] are syntactic sugar.
Method calls and method definitions are syntactic sugar.
The trinary if operator "x if flag else y" is syntactic sugar.
Most of these have been part of Python since the earliest days. Some of
them, like method calls, are so established in Python and other languages
that it's hard to remember that they could be done another way, without
syntax support, but of course they could be:
# instance.method(arg)
getattr(instance, 'method')(arg)
Python uses relatively little punctuation. That's one of the strengths of
the language, and why its very unlikely that your suggestions will be
implemented in Python.