[Tutor] How to perform variable assignment and

Oxymoron moron.oxy at gmail.com
Sat Oct 3 08:14:54 CEST 2009


On Sat, Oct 3, 2009 at 3:56 PM, Didar Hossain <didar.hossain at gmail.com>wrote:

> homedir = os.environ.get('HOME')
> if homedir:
>    print "My home directory is %s" % homedir
> I do this in Perl -
> my $home;
> if ($home = $ENV{'HOME'}) { print "My home directory is $home\n"; }
> Can I do a similar shortcut statement like the above in Python?
There are probably various syntactic tricks to achieve the same, however,
the main reason you can't do it is that assignment in Python is a statement
rather than an expression, i.e. it does not return a value that the if
statement can evaluate.

While having an assignment as an expression could be convenient in places (I
have had my moments where I wish it was!), that particular usage is also a
source of common bugs. Often in conditional statements people want to do a
comparison using the == operator rather than an assignment (=) + eval.
Marking assignment as a statement rather than an expression prevents this
bug, since it is now a syntax error in this case - an if statement cannot
work on something that doesn't return anything.

My Perl is rusty at best! Not sure if there's an == operator, if there isn't
then the decision to allow this is probably more justified since comparison
and assignment are sufficiently different syntax-wise  that the intent is

-- Kamal
There is more to life than increasing its speed.
-- Mahatma Gandhi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20091003/99a97777/attachment.htm>

More information about the Tutor mailing list