On Fri, Oct 2, 2009 at 11:14 PM, Oxymoron <moron....@gmail.com> wrote: > Hello, > > On Sat, Oct 3, 2009 at 3:56 PM, Didar Hossain <didar.hoss...@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 _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor