[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