ifficult thing to do?
Yes, due to the HDNP (Highly Dynamic Nature of Python).
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
ch contains either of the bags).
I agree, and this is what I proposed in my post (except that I spelt A|
B as A.union(B))
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
gt; Alternatives
> -
> One could use other unused operators like F << G or F * G to write
> terse function composition expressions. I' m not sure which one is
> best and would use the proposed & if no one presents arguments against
> it.
What about other callable objects?
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
action in repeat(f, n): action()
I don't know how 'Pythonic' this would be...
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
On Feb 3, 9:43 am, Kay Schluehr <[EMAIL PROTECTED]> wrote:
> On 3 Feb., 10:13, Arnaud Delobelle <[EMAIL PROTECTED]> wrote:
>
>
>
> > On Feb 3, 5:09 am, Kay Schluehr <[EMAIL PROTECTED]> wrote:
>
> > > As you know, there is no operator for functio
to create an object which is only ever used as the default
arguement:
nokey = object()
def func(key=nokey):
if key is nokey:
# key not given
else:
# key given
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
eople prefer the
> pseudo-default or sentinal value approach given by Arnaud. The only change
> I would make from his post is to add at least an underscore to the sentinal
> name to indicate that it is private to the module and not for use of
> importers (and excluded from 'import
bclass(Dog, object) #True
> print issubclass(type, object) #True
> print issubclass(Dog, type) #False
Are you suggesting a new axiom for propositional logic:
((P => Q) ^ (R => Q)) => (P => R) ?
I.e. in fruit logic: every orange is a fruit and every apple is a
double(4)
>
> 64
>
> Probably not the best implementation, but you get the idea.
This is nice.
* I wouldn't choose '&' as the composing operator as when I read
'double & square' I think 'take an x, double it & square it' which is
the wrong interpretation (perhaps << instead?).
* I would call the decorator 'composable'.
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
onal problems that everyone goes through.
> You'll learn a lot of useful things in the process." - Peter Hansen
Maybe that should go in the FAQ ;-)
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
time:%5.2f s' % ( time.time() - start)
Could it be because .NET doesn't have arbitrary length integer types
and your little benchmark will create lots of integers > 2**32 ?
What is the result if you replace foo(a) with
def foo(a): return sqrt(a)
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
bearophile
Personally, between
* foo if foo else bar
* foo or bar
I prefer the second. Maybe it could be spelt
* foo else bar ?
Moreover between the following two:
* foores = foo()
foobar = foores if foores else bar
* foobar = foo() or bar
I also prefer the second. Maybe it could
in the latter case,
> the first parameter will be the implicit 'self', which I would like to
> ignore. However, when the wrapping occurs, the method still looks like
> a function.
>
> Berteun
I think you're better off having a 'wrap' decorator for functions and
a 'wrapmethod' decorator for methods.
HTH
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
x27;s
called '@apply' (I don't know what your @call returns):
@apply
def the_answer(x=6):
return x*(x+1)
print the_answer
:-)
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
> the compiler could do little else except translate it to something
> like:
>
> (python:add a b)
[snip more interesting considerations about compiling python]
Please get back on topic. This discussion is about parsecs and
wookies now.
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
of non iterables in L.'''
> if L == []:
> return count
> n = []
> for e in L:
> if not hasattr(e,'__iter__'):
> print e,
> count += 1
> else:
> n[:] += e
I would write n.extend(e) here (or n += e)
> print '\n'
> return traverse(n,count)
>
> L = grow([],10)
> C = traverse(L)
> ##
>
> --
> Zack
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
)
except IndexError:
return True
issubseq('m&e', 'spam&eggs)
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
Typical usage is:
if 3 <= x < 9: # meaning (3 <= x) and (x < 9)
# do something...
So 't' in sample == True means the same as
('t' in sample) and (sample == True)
Which will never be true as sample is a dictionary.
To solve this, use brackets:
>>> ('t' in sample) == True
True
HTH
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
On Feb 8, 1:48 pm, Boris Borcic <[EMAIL PROTECTED]> wrote:
> Arnaud Delobelle wrote:
>
> (...)
>
>
>
> > from itertools import chain
>
> > def overlaps(lst):
> > bounds = chain(*(((x[1],i), (x[2], i)) for i,x in enumerate(lst)))
>
&
True
>
> It's operator precedence. 'in' has lower precedence than '=='. Therefore
> 't' in sample == True
> evaluates as
> 't' in (sample == True)
>
> The real question is why does
> 't' in (sample == True)
> cause an error:
> TypeError: argument of type 'bool' is not iterable
> while
> 't' in sample == True
> does not?
That should have told you precedence is not the reason!
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
the metaclass. By default
is calls cls.__new__ then cls.__init__, e.g.:
class RDFObject(object):
# This metaclass prevents __init__ from being automatically called
# after __new__
class __metaclass__(type):
def __call__(cls, *args, **kwargs):
return cls.__new__(cls, *args, **kwargs)
# ...
HTH
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
obj = cls._cache[uri] = object.__new__(cls)
obj.__init__(uri, *args, **kwargs)
return obj
It doesn't look up the cache sho much and I think reads just as well.
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
?
>
> inspect is a module, inspect is the name. It is not a module for
> editing Python code per se, but it will help with the other part.
I don't think the OP wants to edit python code *objects*, rather he
wants to edit python *source* code programmatically. Inspect is not
the tool for this.
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
y lookups (LOAD_GLOBALs) in f2. A C version of
'compose' could easily be written that doesn't require the use of a
python lambda-function (as created by 'getcomposer').
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
bove problem are welcome too.
> thanks!
Have you tried the mod_python mailing list? (see http://www.modpython.org/)
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
eritems()))
else:
return (pfx, d),
test = {"mays" : {"eggs" : "spam"},
"jam" : {"soda" : {"love" : "dump"}},
"lamba" : 23
}
>>> print dict(flattendict(test))
{'lamba': 23, 'mays/eggs': 'spam', 'jam/soda/love': 'dump'}
You an even have other separators ;)
>>> print dict(flattendict(test, sep='.'))
{'lamba': 23, 'jam.soda.love': 'dump', 'mays.eggs': 'spam'}
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
ss__.__dict__
> tmpD.update(d)
> d = tmpD
> supers = list(obj.__class__.__bases__)
> for c in supers:
> tmpD = c.__dict__
> tmpD.update(d)
> d = tmpD
> supers.extend(c.__bases__)
> return d
>
> --
> Zack
Child class attributes override base class ones, so your function will
get the wrong dict I think in cases like:
class A(object):
x = 1
class B(A):
x = 2
Why not do something like this:
def fulldict(obj):
d = {}
for t in reversed(type(obj).__mro__):
d.update(t.__dict__)
d.update(obj.__dict__)
return d
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
On Feb 17, 12:18 pm, Terry Jones <[EMAIL PROTECTED]> wrote:
> Hi Arnaud & Benjamin
>
> Here's a version that's a bit more general. It handles keys whose values
> are empty dicts (assigning None to the value in the result), and also dict
> keys that are not stri
On Feb 17, 4:03 pm, Boris Borcic <[EMAIL PROTECTED]> wrote:
> George Sakkis wrote:
> > On Feb 17, 7:51 am, Arnaud Delobelle <[EMAIL PROTECTED]> wrote:
>
> >> BTW, I keep using the idiom itertools.chain(*iterable). I guess that
> >> during functio
e (LOAD_CONST 1 /
LOAD_CONST 1 / COMPARE_OP 8).
Whereas when "3.0*1.0 is 3.0" is evaluated, *two* different float
objects are put on the stack and compared (LOAD_CONST 3 / LOAD_CONST
1 / COMPARE_OP 8). Therefore the result is False.
HTH
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
from people who obfuscate multi-
> expression functions by writing them as a generator expression.
I'm sorry if my Python is difficult to understand. That's because
I've got a bit of a Lisp...
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
On Feb 19, 1:47 pm, Boris Borcic <[EMAIL PROTECTED]> wrote:
> Arnaud Delobelle wrote:
> > On Feb 13, 10:19 pm, Tobiah <[EMAIL PROTECTED]> wrote:
> >>>>> print float(3.0) is float(3.0)
> >> True
> >>>>> print float(3.0 * 1.0) is
On Feb 19, 8:26 pm, [EMAIL PROTECTED] wrote:
[...]
> The only thing preventing Python from being
> that language is the difficulty of integrating a macro system, n'est-
> ce pas?
Well there's logix (http://www.livelogix.net/logix/)
--
Arnaud
--
http://mail.python.org/mail
(match, actions=actions, default_action=None):
for string, action in actions:
if match(string):
return action
return default_action
find_action(re.compile('some pattern').match)()
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
t;
(python 3.0)
>> def counter(acc=0, step=1):
... def tick():
... nonlocal acc
... acc += step
... return acc
... return tick
...
>>> c = counter()
>>> c()
1
>>> c()
2
>>>
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
d a
;-)
Ahem. I admit that somehow, I am proud of this.
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
2.5' not in version:
> # use custom all() script
>
>
Or simply:
try:
all
except NameError:
def all(iterable):
for x in iterable:
if not x: return False
return True
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
ind it a bit more readable.
In this case why not:
def xfib(a=1, b=1):
while True:
yield a
a += b
yield b
b += a
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
On Feb 25, 10:52 pm, [EMAIL PROTECTED] wrote:
> Arnaud Delobelle:
>
> > In this case why not:
>
> > def xfib(a=1, b=1):
> > while True:
> > yield a
> > a += b
> > yield b
> > b += a
>
> That's
On Feb 25, 11:17 pm, Paul Rubin <http://[EMAIL PROTECTED]> wrote:
> Arnaud Delobelle <[EMAIL PROTECTED]> writes:
> > def all(iterable):
> > for x in iterable:
> > if not x: return False
> > return True
>
> from itertools
given the
digital nature of modern computers), and integers are the more natural
numerical objects to associate with discrete things. As with the
soccer example given by D'Arcy J.M. Cain, many objects can't be
chopped in halves or quarters (especially in CS) therefore float
division is no meaningless to them.
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
et 0.20001 of a cake :)
Or perhaps it would be better to have 2**n guests...
Or maybe one should think of the cake as 1.0 cake, as experience shows
that cakes can be cut...
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
f
> parameters such as
>
> "%s=%s&%s=%s" % map(urllib.quote, params)
>
> Any suggestions? (even if it's just "get over your hangup with
> wrapping the results in list()/tuple()" :)
get over your hangup with wrapping the results in tuple()! (not list()
though, as explained above).
Or you could always define
def tmap(*args):
return tuple(map(*args))
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
On Feb 27, 5:23 pm, [EMAIL PROTECTED] wrote:
> I spent too long Googling for Python's BNF. Eventually found it at
> Python.org, but only by accident.
http://www.google.com/search?q=python+grammar
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
urlib.quote exactly once altogether. Whereas
[urllib.quote(x) for x in params]
looks for urlib.quote once for every element in params. (Of course in
the example given params only has 4 elements so it doesn't matter).
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
t;""
seq = [n]*k + [0]
while True:
yield tuple(seq[i] - seq[i+1] for i in xrange(k))
i = seq.index(0) - 1
if i >= 1:
seq[i:k] = [seq[i] - 1] * (k - i)
else:
return
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
On Feb 28, 4:44 pm, Arnaud Delobelle <[EMAIL PROTECTED]> wrote:
> ... here is another attempt on the same principle:
>
> ---
> def boxings(n, k):
> """boxings(n, k) -> iterator
>
> Generate all ways to place n indistiguish
def __new__(cls, name, bases, dict):
bases += (abase,)
return type.__new__(cls, name, bases, dict)
HTH
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
very sound decision. What screws me is that I'm going to have to type
p//q in the future.
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
' y: Here is y.'
> > =
>
> Looks like a bug to me - or perhaps someone who actually understands how
> import works could explain it?
Say:
pack/
__init__.py
x.py
importing x in any manner will automatically load pack and put x in
pack's namespace. Try:
from pack import x as foo
sys.modules['pack'].x
This explain the behaviour observed by the OP. AFAIK it is not a
bug. The tutoria hints at this without going into too much detail.
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
On Feb 29, 10:10 pm, "Terry Reedy" <[EMAIL PROTECTED]> wrote:
> "Arnaud Delobelle" <[EMAIL PROTECTED]> wrote in message
>
> | What screws me is that I'm going to have to type p//q in the future.
>
> When I compare that pain to the gain of
On Mar 1, 5:49 am, "Terry Reedy" <[EMAIL PROTECTED]> wrote:
> "Arnaud Delobelle" <[EMAIL PROTECTED]> wrote in message
>
> news:[EMAIL PROTECTED]
> | Perhaps it'll be like when I quit smoking six years ago. I didn't
> | enjoy it although I
a[1]
>
> Apart from doing something like
> a=[0,0,0]
> b=[0,0,0]
> c=[0,0,0]
> d=[a,b,c]
>
> is there a better way of creating d??
It's a FAQ:
http://www.python.org/doc/faq/programming/#how-do-i-create-a-multidimensional-list
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
rn:
[...]
You could have a look at how django [http://www.djangoproject.com] and
how they handle forms:
http://www.djangoproject.com/documentation/newforms/
In fact their newforms module should work fine as a standalone.
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
On Mar 3, 4:39 pm, Paul Rubin <http://[EMAIL PROTECTED]> wrote:
[...]
> You are right, C is even worse than I remembered.
It's good enough to be the language used for the reference
implementation of python :-)
[...]
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
ld'
>>> spaces = " "
>>> import re
>>> r = re.compile('\\n')
>>> from timeit import Timer
>>> Timer("r.sub('\\n'+spaces, s)", "from __main__ import r,spaces,s").timeit()
1.7726190090179443
>>> Timer("s.replace('\\n', '\\n'+spaces)", "from __main__ import s,
>>> spaces").timeit()
0.76739501953125
>>> Timer("re.sub('\\n', '\\n'+spaces, s)", "from __main__ import re, s,
>>> spaces").timeit()
4.3669700622558594
>>>
Regexps are still more than twice slower.
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
7;: l += list(' EGGS')
... if c == 'S': l += list(' NI')
...
>>> ''.join(l)
'SPAM NI EGGS NI'
>>>
Of course in practice this is no different from doing 'for c in l:...'
but it is safe against implementation changes.
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
ere seems no way to do this,
> but before writing my own solution, I want to know whether
> the solution already exists or not.
>
> Thanks.
Don't know but you could write:
>>> import textwrap
>>> def wraplines(text):
... return '\n'.join(textwra
nor a hack, I haven't tried to measure it
against other approaches (obviously it wouldn't beat the eval(...)
hack). I haven't optimised it for readability (by others) either :)
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
9 introduces .add(), .discard(), .toggle() for
MutableSets which all mutate self and return a non None object.
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
order... negate
>
> -- Andrew
There would be many ways to do this. One:
>>> import re
>>> r = re.compile(r'/\*(.*?)\*/')
>>> tst = '.a { color: 0xAACC66; /* Fav color */ }'
>>> m = r.search(tst)
>>> m.group(1)
' Fav color '
>>>
HTH
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
Hi\nthere!'
Hi
there!
>>> print r'Hi\nthere!'
Hi\nthere!
>>>
If you haven't done so already, I suggest reading the tutorial. Here
is a link to the relevant section on strings:
http://docs.python.org/tut/node5.html#SECTION00512
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
s
created, the first one is already dead. So The second one takes its
place in memory, hence their ids are equal
3. In (B) the first foo.bar is kept alive for comparing with the
second, hence they have a different id.
4. Both points above follow from the fact that foo.bar is really a
function ca
On Mar 13, 11:29 pm, Dave Kuhlman <[EMAIL PROTECTED]> wrote:
> Arnaud Delobelle wrote:
>
> > 4. Both points above follow from the fact that foo.bar is really a
> > function call that returns a (potentially) new object: in fact what
> > really happens is something
Note, the left-to-right evaluation order of the iterables is
guaranteed. This makes possible an idiom for clustering a data series
into n-length groups using "izip(*[iter(s)]*n)". For data that doesn't
fit n-length groups exactly, the last tuple can be pre-padded with
fill values using "izip(*[chain(s, [None]*(n-1))]*n)".
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
by zero',),
> )
>
> Wy does the output of ZeroDivisionError appear in sys.exc_info() but
> for test it is just Test() (should be Test('mess') right??)
Three ways to do it right:
* Override __repr__() rather than __str__
or forget about __repr__() and instead:
* c
> "check_env()" function before it reaches the "def" statement.
>
> I need the check to be done before the subprocess import, because our
> customers use different Python versions, some of them do not have
> subprocess module. So i want to exit if i see that Python version
> being used doesn't have that module.
>
> The solution to that problem with what you suggested could be wrapping
> the subprocess import with function, am i correct?
why not:
try:
from subprocess import *
except ImportError:
sys.exit('No subprocess module :(')
# Rest of module
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
On Mar 15, 5:47 am, Tim Roberts <[EMAIL PROTECTED]> wrote:
> Jeff Schwab <[EMAIL PROTECTED]> wrote:
> >Roel Schroeven wrote:
> >> [EMAIL PROTECTED] schreef:
> >>> On Mar 14, 1:47 pm, "Reedick, Andrew" <[EMAIL PROTECTED]> wrote:
> > Subject: RIP: Joseph Weizenbaum
> > Creator of Eliza:
> >>>
om MacPorts. That's not quite what I wanted,
> because they only have a version for Python 2.4. *Sigh*. MacPorts seems
> to be getting new ports all the time. The problem is, there also seems
> to be an aweful lot of ports gathering bitrot.
Is there a particular reason you want python from MacPorts? OSX
Leopard comes with python 2.5, that's what I use on my mac.
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
('test(list, n)', 'from __main__ import test, n').timeit(1)
2.4988760948181152
>>> from array import array
>>> arr = lambda n: array('i', n)
>>> timeit.Timer('test(arr, n)', 'from __main__ import test, arr, n').timeit(1)
5.7419960498809814
>>>
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
urn [(i+1)*dist/parts - i*dist/parts for i in xrange(parts)]
>>> slope(130, 50)
[2, 3, 2, 3, 3, 2, 3, 2, 3, 3, 2, 3, 2, 3, 3, 2, 3, 2, 3, 3, 2, 3, 2,
3, 3, 2, 3, 2, 3, 3, 2, 3, 2, 3, 3, 2, 3, 2, 3, 3, 2, 3, 2, 3, 3, 2,
3, 2, 3, 3]
>>> len(slope(130, 50))
50
>>> sum(slope(130, 50))
130
>>>
Smugly yours
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
nput in the buffer. Make sense? Totally easy? Let me
> know...
If you are on a UNIX platform, you can use the curses module.
http://docs.python.org/lib/module-curses.html
There is a link there to a tutorial, but it seems to be broken. A
quick search finds it there:
http://www.amk.ca/python/howto/
name = line.rpartition(' ')[-1] # assumes no whitespace in
filenames
if line[0] == 'd':
#filename is a directory
print 'directory', name
else:
print 'file', name
#This will print all files in cwd prefixed by 'directory'
!= j == k: yield k
i, j = j, k
>>> list(duplicates([1, 2, 3, 2, 2, 4, 1]))
[1, 2]
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
t; was just, in effect, implicit linked listing - ie it still needs a
> linear search to handle collisions, it just avoids the need for
> explicitly stored link fields. Perhaps I'm mistaken.
I don't think you are mistaken, but if I'm wrong I'd be grateful for a
link to
On Mar 19, 3:08 am, Bryan Olson <[EMAIL PROTECTED]> wrote:
> Arnaud Delobelle wrote:
> > Ninereeds wrote:
> >> Hrvoje Niksic wrote:
> >>> This doesn't apply to Python, which implements dict storage as an
> >>> open-addressed table and automat
gt;>> @WhyOhWhy
... def f(x): print "Why oh why,", x
...
>>> f("do this?")
Why oh why, do this?
>>> f == 0
True
>>>
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
h table behaves
just like a linked list.
Lastly, if one deals with a totally ordered set of object but they are
not hashable (there isn't a good hash function), then Ninereeds' idea
of sorting first is still useful.
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
or queue of recent results,
> you could implement it yourself easily.
As you guessed, __ and ___ have the expected meaning in IPython.
moreover the nth output in the session is stored in _n.
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
Also,
> the docs don't mention it.http://docs.python.org/ref/keywords.html
That's because you have to do:
from bearophile import musings
HTH
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
d principles.
I'm not from the US and I'm not sure what 9th/12th grade are, but if
you want to use programming to explore maths, er I mean math, have a
look at the sage project:
http://www.sagemath.org/
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
I felt like a man who's had a black and white TV set all
his life and watches colour TV for the first time. What if computers
had been designed as 'lambda-calculus machines' from the start rather
than Turing machines?
Anyway, here the conclusion that I draw: learn lambda-calculus
x27;: 0, 'color': 'cyan', 'pattern':
'blank', 'layerNumber': 0, 'minSpacing': 0, 'blink': 0, 'minWidth': 0,
'visible': 1, 'pitch': 0, 'selectable': 1, 'lineStyle': 'solid'}
>>> p['Layer']['METAL2']['maskName']
'metal2'
>>> p['Technology']['gridResolution']
5
>>>
HTH
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
programmers who have all agreed to use the same
language.
Anyway, I have browsed the book and agree with Paul Rubin that there
doesn't seem to be any unusual notation in it, although there are a
numbers of topics that I am not really familiar with.
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
constant time but I haven't checked the code.
> Same for bool(dict) (which is what you get when you run "if dict: ...").
It has to be constant time as it is a lower bound for inserts (which
average to constant time).
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
bute? Surely the name of the function should be that of the function
> object, not of one of the shared parts?
>>> foo1.__name__
'foo'
>>> foo1.func_code.co_name
'foo'
As seen above, func.__name__ and func.func_code.co_name are the same
thing (until tampered with).
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
sense for code objects to have a name
(taken from the def statement) than for function objects, as there is
exactly one code object for every def statement.
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
acked
@hijack
def foo(x):
x = x + 1
hijacker(x)
return x * 2
def hijacker(x):
if x == 21:
print "[Oh no, it's going to be 42!]"
raise HijackReturn(41)
# ---
marigold:junk arno$ python -i hijack.py
>>> foo(10)
22
>>> foo(20)
[Oh no, it's going to be 42!]
41
>>>
HTH
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
>>> check_hypo = get_spellchecker('hypopothamus')
>>> check_hypo('Hypopothamus')
True
>>> check_hypo('Big scary mammal')
False
(Warning: this is all untested).
HTH
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
help.
>
> class MyClass(object):
> pass
>
> records = ["spam", "ham"]
> for record in records:
> # define a new function
> def f(n):
> return (record + " ")*n
> # create a new instance
> instance = MyClass()
> # and dynamically add a method to it
> setattr(instance, 'execute', f)
> instance.execute(5)
Amusingly naive'ly yours
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
7;ham ham ham ham ham '
'ham ham ham ham ham '
Because the name 'record' in f is bound to 'ham' after the loop.
To fix this, you can for example change
def f(n): ...
to
def f(n, record=record): ...
This way, 'record' is local to f and won't change at the next
iteration of the loop.
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
;> print "''"
''
Why do you wrap f.read(...) in the repr() function? If you remove the
two repr() I suspect your code will work.
OTOH do you know that the read() method of file objects does what you
want? You could simply write:
file_str = f.read()
Or are there some other factors that prevent you from doing this?
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
ying to read a binary file and
> put it's contents in an xml message to send via the network, so that I
> can re-create it on the other side. I do need to keep the xml aspect
> though. Is there a better way of doing this?
>
> Thanks,
> Gabriel
Have a look at the uu and base64 modules:
http://docs.python.org/lib/module-uu.html
http://docs.python.org/lib/module-base64.html
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
case you change your mind).
In the meantime why not adopt the terminology commonly used on this list
and by Python users at large? Nobody else would talk about 'a function
that takes a reference to a class'. It's just plain confusing.
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
Aaron Brady <[EMAIL PROTECTED]> writes:
> Truth and clarity are not tired of this thread.
This is such a marvellously economic way of putting it, it's poetic!
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
Arnaud Delobelle <[EMAIL PROTECTED]> writes:
>> (BTW, I think your earlier decorator had a bug, in that it failed to
>> define __ne__ but then called "self != other".)
>
> That would be true for Python 2.x but I'm explicitly writing code for
> Python 3 h
Steven D'Aprano <[EMAIL PROTECTED]> writes:
> On Sat, 22 Nov 2008 09:10:04 +, Arnaud Delobelle wrote:
>
>> That's not surprising. You're measuring the wrong things. If you read
>> what I wrote, you'll see that I'm talking about Fraction.__g
George Sakkis <[EMAIL PROTECTED]> writes:
> On Nov 23, 6:14 am, Arnaud Delobelle <[EMAIL PROTECTED]> wrote:
>
>> So how did I get it into my head that defining __eq__ would create the
>> correct behaviour for __ne__ automatically? And more puzzlingly, how
>&
sting technique. I must point out, though, that it doesn't
> indicate if a dict has been changed, only that potentially changing
> operations have been performed. So it really depends on what Stef
> originally meant by changed, and perhaps what is meant by == :)
>
> x = {'
re a way to use a dictionary this way, or am I stuck with
> copy/pasting blocks of "if m:"?
But there is no reason why you should use a dictionary; just use a list
of key-value pairs:
patterns = [
("pattern1", re.compile(">.+?.+?>(.+?)"),
("pattern2", re.compile("something else"),
]
for name, pattern in patterns:
...
--
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list
401 - 500 of 1146 matches
Mail list logo