GeneratorExit masks StopIteration?

2017-01-29 Thread inyeol . lee
Does generator.close() prevent raising StopIteration?

I'm trying to get the return value from coroutine after terminating it.
Here is simple test code:

$ python3
Python 3.6.0 (default, Dec 23 2016, 12:50:55) 
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.38)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> def cor():
...   try:
... item = yield
...   except GeneratorExit:
... return 1
... 
>>> c = cor()
>>> next(c)
>>> c.close()
>>>

I was expecting StopIteration from c.close() call, but Python 3.6 doesn't raise 
any.
Is this behavior expected? I couldn't find any reference regarding 
GeneratorExit and StopIteration interaction.
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: GeneratorExit masks StopIteration?

2017-01-29 Thread inyeol . lee
On Sunday, January 29, 2017 at 9:54:44 PM UTC-8, Chris Angelico wrote:
> ...
> When you close() a generator, it raises GeneratorExit into it, and
> then silences any StopIteration or GeneratorExit that comes out of it.

Chris,
Thanks for the info. Is this (GenExit silencing StopIteration) documented 
somewhere?
I was suspecting this but couldn't find any reference.

-- 
https://mail.python.org/mailman/listinfo/python-list


Re: GeneratorExit masks StopIteration?

2017-01-29 Thread inyeol . lee
On Sunday, January 29, 2017 at 10:47:09 PM UTC-8, Chris Angelico wrote:
> On Mon, Jan 30, 2017 at 5:38 PM,   wrote:
> > On Sunday, January 29, 2017 at 9:54:44 PM UTC-8, Chris Angelico wrote:
> >> ...
> >> When you close() a generator, it raises GeneratorExit into it, and
> >> then silences any StopIteration or GeneratorExit that comes out of it.
> >
> > Chris,
> > Thanks for the info. Is this (GenExit silencing StopIteration) documented 
> > somewhere?
> > I was suspecting this but couldn't find any reference.
> 
> Actually. think this might be incorrect. I didn't look in the
> docs, I looked in the source code, so my information is guaranteed
> accurate

I found PEP-342 describes this behavior - silencing other GenExit or 
StopIteration.

BTW, the reason why I was checking this was to find a solution on how to get 
return value from coroutine without relying on some sentinel value, something 
like (not tested):

def accumulator():
  sum = 0
  try:
while True:
  sum += yield
  except GeneratorExit:
return sum

Any alternatives? Explicitly throwing GenExit looks like a hack.

-- 
https://mail.python.org/mailman/listinfo/python-list


[OT] Re: how to debug when "Segmentation fault"

2005-10-04 Thread Inyeol Lee
On Tue, Oct 04, 2005 at 11:22:24AM -0500, Michael Ekstrand wrote:
[...]
> I've never seen "stock" Python (stable release w/ only included modules) 
> segfault, but did see a segfault with an extension module I was using 
> the other week (lxml IIRC, but I'm not sure).
> 
> - Michael

So far, this is the simplest way to crash stock python, at least in
Unix/Linux;

$ python < /bin

If you redirect directory instead of file, python crashes. I think this bug was
introduced around 2.1 or 2.2, and not yet fixed as of 2.4.1.

- Inyeol
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: repeating regular expressions in one string

2005-11-16 Thread Inyeol Lee
On Wed, Nov 16, 2005 at 03:09:56PM -0500, Shane wrote:
> Hi folks,
> 
> I'm new to regular expressions (and a novice at Python) but it seems to be 
> the tool I need for a particular problem. I have a bunch of strings that 
> looks like this:
> 
> 'blahblah_sf1234-sf1238_blahblah'
> 
> and I would like to use the re module to parse all the 'sf' parts of the 
> string. Each 'sf' needs to be its own string when I am through. How do I 
> compile a regular expression that looks for more than one instance? Currently 
> my expression looks like this:
> 
> myString = re.compile('sf[0-9][0-9][0-9][0-9]')
> 
> This works great for finding the first instance of 'sf'. I hope that was 
> clear :)
> 
> Thanks,
> 
> Shane
> -- 
> http://mail.python.org/mailman/listinfo/python-list

You can simplify your pattern

myString = re.compile('sf[0-9][0-9][0-9][0-9]')

to

myString = re.compile(r"sf\d{4}")

>>> import re
>>> s = 'blahblah_sf1234-sf1238_blahblah'
>>> pat = re.compile(r"sf\d{4}")
>>> re.findall(pat, s)   
['sf1234', 'sf1238']
>>> for m in re.finditer(pat, s):
... print m.group()
... 
sf1234
sf1238
>>> 

Inyeol
-- 
http://mail.python.org/mailman/listinfo/python-list


[pyparsing] How to get arbitrary text surrounded by keywords?

2005-11-28 Thread Inyeol Lee
I'm trying to extract module contents from Verilog, which has the form
of;

module foo (port1, port2, ... );

// module contents to extract here.
...

endmodule

To extract the module contents, I'm planning to do something like;

from pyparsing import *

ident = Word(alphas+"_", alphanums+"_")
module_begin = Group("module" + ident + "(" + OneOrMore(ident) + ")" + ";")
module_contents = ???
module_end = Keyword("endmodule")
module = Group(module_begin + module_contents + module_end)

(abobe code not tested.)

How should I write the part of 'module_contents'? It's an arbitrary text
which doesn't contain 'endmodule' keyword. I don't want to use full
scale Verilog parser for this task.

-Inyeol
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: [pyparsing] How to get arbitrary text surrounded by keywords?

2005-11-28 Thread Inyeol Lee
On Mon, Nov 28, 2005 at 09:00:58PM +, Paul McGuire wrote:
> "Inyeol Lee" <[EMAIL PROTECTED]> wrote in message
> [...]
> > How should I write the part of 'module_contents'? It's an arbitrary text
> > which doesn't contain 'endmodule' keyword. I don't want to use full
> > scale Verilog parser for this task.
> >
> > -Inyeol
> 
> The simplest way is to use SkipTo.  This only works if you don't have to
> worry about nesting.  I think Verilog supports nested modules, but if the
> files you are parsing don't use this feature, then SkipTo will work just
> fine.
> 
> module_begin = Group("module" + ident + "(" + OneOrMore(ident) + ")" + ";")
> module_end = Keyword("endmodule")
> module_contents = SkipTo(module_end)
> 
> If you *do* care about nested modules, then a parse action might help you
> handle these cases.  But this starts to get trickier, and you may just want
> to consider a more complete grammar.  If your application is non-commercial
> (i.e., for academic or personal use), there *is* a full Verilog grammar
> available (also available with commercial license, just not free).
> 
> -- Paul

Thanks Paul. 'SkipTo' is what I was looking for.

-Inyeol
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Instances behaviour

2005-12-01 Thread Inyeol Lee
On Thu, Dec 01, 2005 at 03:51:05PM -0800, Mr.Rech wrote:
[...]
> Suppose I have a bunch of classes that represent slightly (but
> conceptually) different object. The instances of each class must behave
> in very similar manner, so that I've created a common class ancestor
> (let say A) that define a lot of special method (such as __getattr__,
> __setattr__, __len__ and so on), and then I've created all my "real"
> classes inheriting from it:
> 
> >>>class A(object):
>  # here define all special and some common methods
> 
> >>> class B(A):
> # this is the first "real" class
> 
> >>> class C(A):
> # and this is the second
> 
> and so on. The problem I'm worried about is that an unaware user may
> create an instance of "A" supposing that it has any real use, while it
> is only a sort of prototype. However, I can't see (from my limited
> point of view) any other way to rearrange things and still get a
> similar behaviour.

>>> class A(object):
>>> ... def __init__(self, foo):
>>> ... if self.__class__ is A:
>>> ... raise TypeError("A is base class.")   
>>> ... self.foo = foo
>>> ... 
>>> class B(A):
... pass
... 
>>> class C(A):
... def __init__(self, foo, bar):
... A.__init__(self, foo)
... self.bar = bar
... 
>>> a = A(1)
Traceback (most recent call last):
  File "", line 1, in ?
  File "", line 4, in __init__
TypeError: A is base class.
>>> b = B(1)
>>> b.foo
1
>>> c = C(1, 2)
>>> c.foo, c.bar
(1, 2)
>>>

HTH
--Inyeol Lee
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Instances behaviour

2005-12-02 Thread Inyeol Lee
On Fri, Dec 02, 2005 at 10:43:56AM +0100, bruno at modulix wrote:
> Inyeol Lee wrote:
> (snip)
> 
> >>>>class A(object):
> >>>>... def __init__(self, foo):
> >>>>... if self.__class__ is A:
> >>>>... raise TypeError("A is base class.")   
> 
> 
> s/TypeError/NotImplementedError/
> s/base class/abstract class/

I prefer TypeError here, NotImplementedError would be OK though.
Here is an example from sets.py in stdlib.


class BaseSet(object):
"""Common base class for mutable and immutable sets."""

__slots__ = ['_data']

# Constructor

def __init__(self):
"""This is an abstract class."""
# Don't call this from a concrete subclass!
if self.__class__ is BaseSet:
raise TypeError, ("BaseSet is an abstract class.  "
  "Use Set or ImmutableSet.")


Inyeol
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: ANN: Dao Language v.0.9.6-beta is release!

2005-12-02 Thread Inyeol Lee
On Fri, Dec 02, 2005 at 09:45:10PM +0100, Gerhard H�ring wrote:
> -BEGIN PGP SIGNED MESSAGE-
> Hash: SHA1
> 
> Micah Elliott wrote:
> > On Dec 02, Dave Hansen wrote:
> > 
> >>Python recognizes the TAB character as valid indentation.  TAB
> >>characters are evil.  They should be banned from Python source code.
> > 
> > AGREE!  AGREE!  AGREE! 
> > 
> >>The interpreter should stop translation of code and throw an
> >>exception when one is encountered.
> > 
> > 
> > You could file a "Parser/Compiler" Feature Request for this [...]
> 
> Read PEP 666 first.
> 

And this one too ;-)
http://www.artima.com/weblogs/viewpost.jsp?thread=101968

--Inyeol
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: Setting PYTHONPATH from Makefile

2005-12-02 Thread Inyeol Lee
On Fri, Dec 02, 2005 at 07:33:20PM -0500, Mike Meyer wrote:
> "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> writes:
> > I have a Makefile target that uses a python script, like:
> >
> > %.abc: %.def
> > python myscript.py
> >
> > The problem is that myscript.py and some modules that myscript.py
> > imports are not in the current directory, but in another place in the
> > filesystem, say, /path/to/stuff. If this was a tcsh script, I would
> > just do:
> >
> >setenv PYTHONPATH /path/to/stuff
> >python myscript.py
> 
> And that still wouldn't work, because you said that myscript.py wasn't
> in the current directory either.
> 
> > but this cannot be done from a Makefile. So what do I do? Is there
> > another way to set the PYTHONPATH? Like giving an option to "python"
> > itself? Or?
> 
> No, you can't. You have to tweak the makefile. Try:
> 
> %.abc: %.def
>(cd /path/to/myscripts/dir; python myscript.py)
> 
> 
> N.B. - this probably depends on both the system and the make you're
> using.
> 

How about using python -m?
Assuming Make uses Bourne shell,

%.abc: %.def
PYTHONPATH=/path/to/stuff:/path/to/another python -m myscript


Don't forget to strip '.py' extension.

--Inyeol Lee
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Setting PYTHONPATH from Makefile

2005-12-02 Thread Inyeol Lee
On Fri, Dec 02, 2005 at 08:10:41PM -0500, Mike Meyer wrote:
> Inyeol Lee <[EMAIL PROTECTED]> writes:
> > On Fri, Dec 02, 2005 at 07:33:20PM -0500, Mike Meyer wrote:
> >> > The problem is that myscript.py and some modules that myscript.py
> >> > imports are not in the current directory, but in another place in the
> >> > filesystem, say, /path/to/stuff. If this was a tcsh script, I would
> >> > just do:
> >> >
> >> >setenv PYTHONPATH /path/to/stuff
> >> >python myscript.py
> > How about using python -m?
> > Assuming Make uses Bourne shell,
> >
> > %.abc: %.def
> > PYTHONPATH=/path/to/stuff:/path/to/another python -m myscript
> 
> That will break __name__ (at least with 2.4.2). Whether or not it
> matters will depend on the script.
> 

$ python -V
Python 2.4.2
$ cat foo/bar.py 
print __name__
$ (cd foo; python bar.py)
__main__
$ PYTHONPATH=$PWD/foo python -m bar
__main__
$ 


Am I missing something? I don't see any issue regarding __name__.

-- Inyeol Lee
-- 
http://mail.python.org/mailman/listinfo/python-list


smtpd.py in python2.4/bin directory?

2005-01-11 Thread Inyeol Lee
After installing Python 2.4 from src tarball I found one new executable in
python/bin directory - "smtpd.py". I also found the same file in
python/lib/python2.4/. Is this intentional or just a minor bug in build
script?

Inyeol
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Declaring variables from a list

2005-04-08 Thread Inyeol Lee
On Sat, Apr 09, 2005 at 03:15:01AM +0530, Sidharth Kuruvila wrote:
> Python has a builtin function called locals which returns the local
> context as a dictionary
> 
> >>> locals = locals()
> >>> locals["a"] = 5
> >>> a
> 5
> >>> locals["a"] = "changed"
> >>> a
> 'changed'

>From Python lib reference:

"""
locals()
...
Warning: The contents of this dictionary should not be
modified; changes may not affect the values of local variables used
by the interpreter. 
"""
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: inheritance?

2006-08-16 Thread Inyeol Lee
On Wed, Aug 16, 2006 at 11:07:08AM -0700, KraftDiner wrote:
[...]
> Here I tried this example and maybe this will explain the difficulties
> I'm having.
> 1) at the time the baseClass is constructed shouldn't the constructor
> of the appropriate
> type be called.
> 2) getName is doing nothing...
> 
> class baseClass:
>   def __init__(self):
>   pass
>   def fromfile(self, str):
>   if (str == 'A'):
>   a = typeA()
>   else:
>   a = typeB()
>   def getName(self):
>   pass
> 
> class typeA(baseClass):
>   def __init__(self):
>   self.name='A'
>   print 'typeA init'
>   def fromfile(self, str=None):
>   print 'typeA fromfile'
>   def getName(self):
>   print self.name
> 
> class typeB(baseClass):
>   def __init__(self):
>   self.name='B'
>   print 'typeB init'
>   def fromfile(self, str=None):
>   print 'typeB fromfile'
>   def getName(self):
>   print self.name
> 
> bc = baseClass()
> bc.fromfile('A')
> bc.getName()
> bc.fromfile('B')
> bc.getName()
> bc.getName()
> 
> log:
> typeA init
> typeB init
>


I didn't follow up this thread from the begining, but I think this is
what you want;

Python 2.4.3 (#1, Mar 31 2006, 09:09:53) 
[GCC 2.95.3 20010315 (release)] on sunos5
Type "help", "copyright", "credits" or "license" for more information.
>>> class baseClass:
... @staticmethod
... def fromfile(string):
... if string == "A":
... return typeA()
... else:
... return typeB()
... def getName(self):
... print self.name
... 
>>> class typeA(baseClass):
... def __init__(self):
... self.name = "A"
... print "typeA init"
... 
>>> class typeB(baseClass):
... def __init__(self):
... self.name = "B"
... print "typeB init"
... 
>>> a = baseClass.fromfile("A")
typeA init
>>> a.getName()
A
>>> b = baseClass.fromfile("B")
typeB init
>>> b.getName()
>>> B
>>>

--
Inyeol Lee
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: scared about refrences...

2006-11-01 Thread Inyeol Lee
On Wed, Nov 01, 2006 at 12:20:36PM -0800, SpreadTooThin wrote:
> 
> Bruno Desthuilliers wrote:
> > Nick Vatamaniuc a �crit :
> > (snip)
> > > In  Python all the primitives are copied and all other entities are
> > > references.
> >
> > Plain wrong. There's no "primitives" (ie : primitive data types) in
> > Python, only objects. And they all get passed the same way.
> 
> so..
> def fn(x):
>x = x + 1
>print x
> 
> a = 2
> fn(a)
> fn(2)
> 
> Wouldn't you say that this is being passed by value rather than by
> refrence?
> 

What you're confused with is assignment. Check this example;

>>> def f(x):
... print id(x)
... x = x + 1
... print id(x)
... 
>>> f(1234)
1617596
1617608
>>> a = 5678
    >>> id(a)
1617596
>>> f(a)
1617596
1617620
>>>

You can assume id() as a memory address. Is it call-by-value?

-- Inyeol Lee
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: Strange behavior with iterables - is this a bug?

2006-05-30 Thread Inyeol Lee
On Tue, May 30, 2006 at 01:11:26PM -0700, [EMAIL PROTECTED] wrote:
[...]
> >>>  RESTART
> >>> f1 = open('word1.txt')
> >>> f2 = open('word2.txt')
> >>> f3 = open('word3.txt')
> >>> print [(i1.strip(),i2.strip(),i3.strip(),) for i1 in f1 for i2 in f2 for 
> >>> i3 in f3]
> [('a', 'a', 'a'), ('a', 'a', 'b'), ('a', 'a', 'c')]
> >>> l1 = ['a\n','b\n','c\n']
> >>> l2 = ['a\n','b\n','c\n']
> >>>
> >>> l3 = ['a\n','b\n','c\n']
> >>> print [(i1.strip(),i2.strip(),i3.strip(),) for i1 in l1 for i2 in l2 for 
> >>> i3 in l3]
> [('a', 'a', 'a'), ('a', 'a', 'b'), ('a', 'a', 'c'), ('a', 'b', 'a'),
> ('a', 'b', 'b'), ('a', 'b', 'c'), ('a', 'c', 'a'), ('a', 'c', 'b'),
> ('a', 'c', 'c'), ('b', 'a', 'a'), ('b', 'a', 'b'), ('b', 'a', 'c'),
> ('b', 'b', 'a'), ('b', 'b', 'b'), ('b', 'b', 'c'), ('b', 'c', 'a'),
> ('b', 'c', 'b'), ('b', 'c', 'c'), ('c', 'a', 'a'), ('c', 'a', 'b'),
> ('c', 'a', 'c'), ('c', 'b', 'a'), ('c', 'b', 'b'), ('c', 'b', 'c'),
> ('c', 'c', 'a'), ('c', 'c', 'b'), ('c', 'c', 'c')]
> 
> explanation of code:  the files word1.txt, word2.txt and word3.txt are
> all identical conataining the letters a,b and c one letter per line.
> The lists I've added the "\n" so that the lists are identical to what
> is returned by the file objects.  Just eliminating any possible
> differences.

You're comparing file, which is ITERATOR, and list, which is ITERABLE,
not ITERATOR. To get the result you want, use this instead;

>>> print [(i1.strip(),i2.strip(),i3.strip(),)
for i1 in open('word1.txt')
for i2 in open('word2.txt')
for i3 in open('word3.txt')]

FIY, to get the same buggy(?) result using list, try this instead;

>>> l1 = iter(['a\n','b\n','c\n'])
>>> l2 = iter(['a\n','b\n','c\n'])
>>> l3 = iter(['a\n','b\n','c\n'])
>>> print [(i1.strip(),i2.strip(),i3.strip(),) for i1 in l1 for i2 in l2 for i3 
>>> in l3]
[('a', 'a', 'a'), ('a', 'a', 'b'), ('a', 'a', 'c')]
>>>


-Inyeol Lee
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Best place for a function?

2007-03-09 Thread Inyeol Lee
On Wed, Mar 07, 2007 at 05:27:04PM -0500, Sergio Correia wrote:
> I'm writing a class, where one of the methods is kinda complex. The
> method uses a function which I know for certain will not be used
> anywhere else. This function does not require anything from self, only
> the args passed by the method.
> 
> Where should I put the function?

Use staticmethod. It's a normal function with class namespace.

--Inyeol
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Best place for a function?

2007-03-13 Thread Inyeol Lee
On Sun, Mar 11, 2007 at 06:36:02PM +0100, Bruno Desthuilliers wrote:
> Inyeol Lee a �crit :
> > On Wed, Mar 07, 2007 at 05:27:04PM -0500, Sergio Correia wrote:
> > 
> >>I'm writing a class, where one of the methods is kinda complex. The
> >>method uses a function which I know for certain will not be used
> >>anywhere else. This function does not require anything from self, only
> >>the args passed by the method.
> >>
> >>Where should I put the function?
> > 
> > 
> > Use staticmethod. It's a normal function with class namespace.
> 
> What do you think the OP will gain from making a simple helper function 
> a staticmethod ? Apart from extra lookup time ?

Namespace.
Plz check this old thread. It explains some usage of staticmethod.
  http://mail.python.org/pipermail/python-list/2003-February/190258.html

--Inyeol
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: tabs and spaces in py3k

2008-12-07 Thread inyeol . lee
On Dec 7, 8:51 pm, [EMAIL PROTECTED] wrote:
> The following code works under 2.6
> 
> def foo():
> a = 1
> <.tab..>b = 1
> 
> but results in a TabError in Python 3k
>
>   File "x.py", line 3
> b = 3
> ^
> TabError: inconsistent use of tabs and spaces in indentation
>
> The py3k docs say the same thing as the 2.6 docs,
> namely that tabs are expanded to spaces prior to
> determining the line's indentation.  (Language
> Ref, Lex Anal, Line Struct, Indentation)
> (I wish someone would put the section numbers
> back in the docs.)  No mention of this change
> (that I noticed) in What's New or NEWS.txt.
>
> Do the Py3k docs need correction?

-tt option in python 2.x is now default in python 3.0.
Apparently it got slipped from any documentation, including what's
new.

--Inyeol
--
http://mail.python.org/mailman/listinfo/python-list


Re: Python 3 __cmp__ semantic change?

2008-11-20 Thread Inyeol . Lee
On Nov 20, 1:18 pm, Johannes Bauer <[EMAIL PROTECTED]> wrote:
> Hello group,
>
> I'm porting some code of mine to Python 3. One class has the __cmp__
> operator overloaded, but comparison doesn't seem to work anymore with that:
>
> Traceback (most recent call last):
>   File "./parse", line 25, in 
>     print(x < y)
> TypeError: unorderable types: IP() < IP()
>
> Was there some kind of semantic change?

Overload __lt__ method.

Inyeol
--
http://mail.python.org/mailman/listinfo/python-list


Re: How do I tell "imconplete input" from "valid input"?

2008-05-29 Thread Inyeol . Lee
On May 29, 9:26 am, たか <[EMAIL PROTECTED]> wrote:
> Hi everyone,
>
>  I am developing the console which has the embedded Python interactive
> interpreter. So, I want to judge whether current command is complete
> or not. Below is good example to solve this problem.
> //
> //http://effbot.org/pyfaq/how-do-i-tell-incomplete-input-from-invalid-i...
> //
> int testcomplete(char *code)
>   /* code should end in \n */
>   /* return -1 for error, 0 for incomplete, 1 for complete */
> {
>   node *n;
>   perrdetail e;
>
>   n = PyParser_ParseString(code, &_PyParser_Grammar,
>Py_file_input, &e);
>   if (n == NULL) {
> if (e.error == E_EOF)
>   return 0;
> return -1;
>   }
>
>   PyNode_Free(n);
>   return 1;
>
> }
>
>  But, I think this code has a problem. For example, when argument
> 'code' has below python command,
>
> if x % 2:
>print "odd"
>
> at the current situation, this function returns COMPLETE!
> But, I think that sometimes users want to type "else" statement. So, I
> expected to get INCOMPLETE from this function, but I didn't.
>
> How should I do it?
>
> Thanks,
> urai

I guess you should use "Py_single_input" instead of "Py_file_input" in
your code, which requires extra NEWLINE to end complex statement.
Plz check details in Grammar/Grammar from python source distribution

--Inyeol
--
http://mail.python.org/mailman/listinfo/python-list


Re: How to serialize and deserialize the objects into memory?

2008-07-11 Thread Inyeol . Lee
On Jul 11, 12:58 pm, hardemr <[EMAIL PROTECTED]> wrote:
> Hello Everyone,
>
> I want to serialize and deserialize the objects into Memory not into
> file. How can i do that?

pickle.dumps and pickle.loads.

--Inyeol
--
http://mail.python.org/mailman/listinfo/python-list


Re: OT: unix newbie questions

2006-03-27 Thread Inyeol Lee
On Sat, Mar 25, 2006 at 03:45:56AM -0800, Gerard Flanagan wrote:
[...]
> * If I want to do :
> 
> mv mypackage-1.0.2.tar.gz subdir/mypackage-1.0.2.tar.gz
> 
>   then tab-completion gives me the first occurrence of the file, but I
> have to type the second  occurrence - is there a way of not having to
> type it?

In this specific case you don't need second filename.

mv mypackage-1.0.2.tar.gz subdir/

is enough. If you need filename for some reason, use this.

mv mypackage-1.0.2.tar.gz subdir/mypackage-1.0.2.tar.gz.backup

=> 

mv mypackage-1.0.2.tar.gz subdir/!#:1.backup

This works for both bash and (t)csh.


--Inyeol
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Scope (?) question

2010-06-15 Thread Inyeol Lee
On Jun 15, 3:22 pm, Peter  wrote:
> I am puzzled by what appears to be a scope issue - obviously I have
> something wrong :-)
>
> Why does this work:
>
> if __name__ == 'main':
>   execfile('test-data.py')
>   print data
>
> and yet this doesn't (I get "NameError: global name 'data' not
> defined"):
>
> def X():
>   execfile('test-data.py')
>   print data
>
> where test-data.py is:
>
> data = [1,2,3,4]
>
> I checked help on execfile and could only find the following
> (mystifying) sentence:
>
> "execfile() cannot be used reliably to modify a function’s locals."
>
> Thanks
> Peter

This is due to CPython's static optimization of local name lookup.
Dummy 'exec' statement disables this and makes your example work:

def X():
  exec "None"
  execfile('test-data.py')
  print data

--inyeol
-- 
http://mail.python.org/mailman/listinfo/python-list