Newbie questions for Python usage
Caolan
caolan at ldmf.net
Tue Aug 22 19:21:01 EDT 2006
Thanks Fred.
> just assign to the attribute and be done with
> it. if you want to use a placeholder value, use None:
I thought I had tried that already but got an error. I'll try it again, and as for the 2nd one, I was hoping to avoid the usage of .cmd or .bat files altogether. Thanks!
-Caolan O'Domhnaill
________________________________
From: python-list-bounces+caolan=ldmf.net at python.org on behalf of Fredrik Lundh
Sent: Tue 8/22/2006 4:08 PM
To: python-list at python.org
Subject: Re: Newbie questions for Python usage
Caolan wrote:
> 1. I understand HOW to use the lambda operator, but WHY would you
> want to use it? Can anyone please give an example of WHY you would
> need it as opposed to just declaring a function either in the
> local scope, or outside?
you don't *need* it, because
callback = lambda arg: expression
is, for most practical purposes, the same thing as
def callback(arg):
return expression
(the only difference is that the __name__ attribute for the function
objects will differ; all lambdas are named "<lambda>", while objects
created by "def" have the original name.)
however, in some cases, it's may be convenient to use the lambda form,
for stylistic reasons.
> 2. I would like to be able to declare as a member attribute a file
> object, however because there is no declaration of variable types
> like there is in C++, there doesn't seem to be a way to do this
> without first making a fobj = open(...) call. Is this true?
not sure what you mean, really -- attributes are not typed, and there's
no way to "declare" them. just assign to the attribute and be done with
it. if you want to use a placeholder value, use None:
class foo:
def __init__(self):
self.file = None # not opened yet
def open(self, name):
self.file = open(name)
or
class foo:
file = None # shared placeholder
def __init__(self):
pass
def open(self, name):
self.file = open(name)
> Now for an os import question for Windows. I wish to automate the
> builds of VS.NET 2005 and I can do so by executing the os.system(...)
> command however I cannot see how to execute the vcvars32.cmd first to
> set environment variables and then execute the actual command-line for
> the build itself.
there's no easy way to do that: environment variables set by a sub-
process isn't available to the main process.
the easiest way to do this might be to simply generate a short temporary
BAT-file for each command, and do os.system() on that file:
f = open("temp.bat", "w")
f.write("@call vcvars32.bat\n")
f.write("cl ...\n")
f.close()
os.system(f.name)
os.remove(f.name)
</F>
--
http://mail.python.org/mailman/listinfo/python-list
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20060822/20382e4e/attachment.html>
More information about the Python-list
mailing list