[Tutor] How to perform variable assignment and

wesley chun wescpy at gmail.com
Sat Oct 3 08:44:04 CEST 2009


On Fri, Oct 2, 2009 at 11:14 PM, Oxymoron <moron.oxy at gmail.com> wrote:
> Hello,
>
> 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.

kamal is correct. you cannot do it in Python because assignments are
not expressions, and when they are, it leads to problems, i.e., code
readability, bugs, etc. Python fights hard to prevent those from
"interrupting your problem-solving," and there's a cost to it --
hopefully the benefits outweigh the minor costs.

as far as your solution goes, it is one of the cleanest solution you
can come up with. however, there is a tiny bug: if the $HOME
environment variable is *not* set, you will get a KeyError exception.
one solution is to add a default value to your get() method call so
that it returns an object with a Boolean False value:

import os

homedir = os.environ.get('HOME', '') # or False or None

if homedir:
   print "My home directory is %s" % homedir

hope this helps!
-- wesley
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
"Core Python Programming", Prentice Hall, (c)2007,2001
"Python Fundamentals", Prentice Hall, (c)2009
    http://corepython.com

wesley.j.chun :: wescpy-at-gmail.com
python training and technical consulting
cyberweb.consulting : silicon valley, ca
http://cyberwebconsulting.com


More information about the Tutor mailing list