🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.python
Article #28342

Re: Prośba o wytknięcie błędów

#28342
From: hubert depesz lubaczewski
Date: Tue, 15 Nov 2011 14:17
45 lines
2886 bytes
On 2011-11-15, Adam Przybyla <adam@rybnik.pl> wrote:
>> def calculate_hash( filename ):
>>    f = open( filename, 'r' )
>>    mail = email.message_from_file( f )
>>    keep_headers =  ( 'subject', 'from', 'to', 'cc', 'in-reply-to', 'references', 'date', 'message-id', 'content-type', 'mime-version' )
>>    for h in mail.keys():
>>        if h.lower() not in keep_headers:
>>            del mail[ h ]
>>    return sha256( mail.as_string() ).hexdigest()
> 	... mozna to napisac krocej:
> def calculate_hash( filename ):
> 	mail=email.message_from_file(open(filename))
> 	[mail.__delitem__(h) for h in mail.keys() if h.lower not in keep_headers]
> 	return sha256( mail.as_string() ).hexdigest()

ej, to ma być python a nie perl :)
a tak bardziej serio - wiem, że można wywalić część zmiennych (f), ale
nie za bardzo lubię robić kilka operacji na raz, w jednym poleceniu
(mówię o open/message_from_file).

co do mail.__delitem__ w []

z tym [] ( to się chyba nazywa list comprehension? )
mam problem koncepcyjny.
tzn. jak pisałem w perlu, to tam mamy podobny mechanizm, nazywa się map.
i podobnie jak ten trick z [] zwraca arraya/listę.
we wszystkich materiałach o stylu programowania piszą by nie używać map
ignorując rezultat (czyli np. nie przypisując go gdzieś, traktując go po
prostu jako jednoliniową pętlę).
i to mi się mocno wtłoczyło w mózg.
tak więc teraz patrząc na 
[ ... for ... if ... ]
mam odruch odrzutny, bo to jest właśnie ignorowanie rezultatu.
może powinienem się przełamać.

dodatkowe pytanie - czy korzystanie bezpośrednio z __funkcji__ jest ok?
z tego co zrozumiałem, to są wewnętrznie używane funkcje które służą do
implementacji operatorów. dostęp do nich jest, ale wydawało mi się, że
używanie ich bezpośrednio jest jakieś "niekoszerne". myliłem się?

depesz

-- 
The best thing about modern society is how easy it is to avoid contact with it.
                                                             http://depesz.com/
Technical Details
Message-ID: <it8ap8-uiv.ln1@depesz.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!.POSTED!depesz.com!not-for-mail
References: <2h09p8-kgk.ln1@depesz.com> <j9ta7o$7ae$2@polsl.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!.POSTED!depesz.com!not-for-mail
From: hubert depesz lubaczewski <depesz@depesz.com>
Newsgroups: pl.comp.lang.python
Subject: Re: Prośba o
 wytknięcie błędów
Date: Tue, 15 Nov 2011 15:17:54 +0100
Organization: depesz Software
Lines: 45
Message-ID: <it8ap8-uiv.ln1@depesz.com>
References: <2h09p8-kgk.ln1@depesz.com> <j9ta7o$7ae$2@polsl.pl>
Reply-To: depesz@depesz.com
NNTP-Posting-Host: andy.depesz.com
Mime-Version: 1.0
X-Trace: news.onet.pl 1321366803 27348 88.198.47.100 (15 Nov 2011 14:20:03 GMT)
X-Complaints-To: niusy@onet.pl
NNTP-Posting-Date: Tue, 15 Nov 2011 14:20:03 +0000 (UTC)
User-Agent: slrn/pre1.0.0-18 (Linux)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit