[Python] dubbi random

Lawrence Oluyede l.oluyede a gmail.com
Lun 2 Mar 2009 11:52:22 CET


On Mon, Mar 2, 2009 at 11:42 AM, Matteo Bertini <matteo a naufraghi.net> wrote:
> Ciao a tutti! Stamani ho un paio di dubbi random:
>
> 1) E' possibile usare functools.partial con funzioni come time.strptime?
>
> Docstring:
>     strptime(string, format) -> struct_time <--- anche se la
> documentazione dice strptime(string[, format])
>
> In [35]: parse_time = functools.partial(time.strptime, format="%d/%m/%Y
> %H:%M")
> In [36]: parse_time("12/12/2009 2:34")
> TypeError                                 Traceback (most recent call last)
> TypeError: strptime() takes no keyword arguments

Un trucco e` invertire i parametri:

In [9]: functools.partial(lambda f, s: time.strptime(s, f), "%d")("3")
Out[9]: (1900, 1, 3, 0, 0, 0, 2, 3, -1)

Come vedi, ho creato una lambda che prende i parametri invertiti per
passarli nel modo giusto a time.strptime.
Non e` di certo il modo migliore :-D

> 2) set.add(item) ha due possibili effetti (a) se item č giā in set non
> fa niente (b) se item non č in set lo aggiunge.
>
> Spesso mi ritrovo a creare funzioni di utilitā come:
>
> def added(aset, item):
>     if item in aset:
>         return False
>     else:
>         aset.add(item)
>         return True
>
> Non potrebbe aver senso avere un set che in qualche modo notifichi un
> cambiamento del suo stato?

Secondo me no, almeno per come la vedo io. Perche` ti deve interessare sapere
se un oggetto e` stato aggiunto in un set? Sai che in un set ci
entrano a meno che non siano un duplicato di qualcosa
di gia` esistente.

> Per analogia:
> le liste non hanno chiamate nop

[].extend([]) e` una nop

> il set č un po' una via di mezzo...

Il set() e` un insieme, che supporta operazioni insiemistiche.
L'aggiunta di un elemento esistente non altera lo stato
del set. Se proprio ci tieni puoi controllare len(s) prima e dopo
l'inserimento, per vedere se la sua dimensione e` cambiata.
Oppure usare l'in come hai fatto tu per sapere se c'e` o meno.


-- 
Lawrence, http://oluyede.org - http://twitter.com/lawrenceoluyede
"It is difficult to get a man to understand
something when his salary depends on not
understanding it" - Upton Sinclair


Maggiori informazioni sulla lista Python