トップページ⇒tech
1001コメント304KB

Pythonのお勉強 Part15

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/11/12(日) 22:51:44
日本 Python ユーザ会
http://www.python.jp/Zope/
Python オフィシャルサイト
http://www.python.org/
Python 2.5
http://www.python.org/download/releases/2.5/
IronPython
http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython
まとめ wiki
http://www7a.biglobe.ne.jp/~yasozumi/python/wiki/
Pythonの入門書「みんなの Python」
http://www.amazon.co.jp/gp/product/479733665X/

Pythonのお勉強 Part14
http://pc8.2ch.net/test/read.cgi/tech/1161272096/
0666デフォルトの名無しさん2006/12/05(火) 13:30:28
>>662
Pythonの and と or はLISP風。
http://www.shido.info/py/python2.html#operator

タプルを使ったエラー回避。まあ2.5には三項演算子があるわけだが。
http://web.archive.org/web/20060109122923/http://www.geocities.jp/shido_takafumi/py/python2.html#operator
0667デフォルトの名無しさん2006/12/05(火) 13:40:20
>>663
ぶっちゃけ得られる銭が全く違うからなぁ・・・
日本では専門書なんて売れないから印税なんて雀の涙
米国では図書館が買ってくれるだけれも馬鹿にならない
そういう文化インフラが嫌になるくらい違うんだよね
0668デフォルトの名無しさん2006/12/05(火) 13:42:29
>>665
そうだね。トリッキーな書き方はPythonに似合わない気がする。
素直に if 文で分けるか、2.5 以降の三項演算子を使うのが吉。
0669デフォルトの名無しさん2006/12/05(火) 16:43:30
>>663
>どこか著者が全力で書いている部分がある。

全力で書きすぎて厚くなってしまった本をありがたがるのは
体力がありあまっているガイジンかオマエみたいな変わり者だけだよ
0670デフォルトの名無しさん2006/12/05(火) 17:34:53
初めてのPythonには仕事や教育の現場で得た経験が詰まってる。
日本のpy本はまとめサイト級(ほめ言葉)って気がする(読んでないから知らんけど)。
0671デフォルトの名無しさん2006/12/05(火) 17:41:06
>>670
>読んでないから知らんけど

ハイハイ、妄想しがちなヒキコモリは黙っていてね
0672デフォルトの名無しさん2006/12/05(火) 18:01:12
zope乙
0673デフォルトの名無しさん2006/12/05(火) 22:04:46
>>663
そんなあなたにはmatzの本がおすすめ。
0674デフォルトの名無しさん2006/12/05(火) 23:07:52
pydevでコンソールでutf-8文字化けしないようにってできまつか?
0675デフォルトの名無しさん2006/12/06(水) 14:41:32
twistedの2.5はまだですか
0676Python初心者(復活)2006/12/06(水) 21:19:19
>>664,665,666,668 Tks.
>ただ、Pythonだと0は偽になるんで、値が0の時を
>真にしたい場合にハマる危険がある。
x = 0
print x == 0 and 'Zero' or 'Not Zero'
これ、ハマらないようだけど?
0677Python初心者(復活)2006/12/06(水) 21:20:41
>>667
>米国では図書館が買ってくれるだけれも馬鹿にならない
「初めてのPython」初版、第二版とも市立図書館に既にある。
「みんなのPython」はリクエストして、現在読んでる。
「実践Python」はついこの前リクエストしたところ。
来年にはこの4冊が揃ってるはず。
来年もし市立図書館でこの4冊を発見したら、貴女は
米国ではなくて私と同じ市に住んでいるのかも…
>>673
>そんなあなたにはmatzの本がおすすめ。
表紙はいかにも品無いが、最初のRuby本は確かに
良かった。Perlのラクダ本に匹敵すると感じた。
0678デフォルトの名無しさん2006/12/06(水) 21:29:41
>>676
b = True
print b == True and 0 or 'Not Zero' # => 'Not Zero'
てことだろ
0679デフォルトの名無しさん2006/12/07(木) 01:26:56
>>677
いや 最初のあの本はダメだと思うが...
Perl4のラクダ本は良くまとまってたよな
Perl5版はぜんぜんダメだが
0680デフォルトの名無しさん2006/12/07(木) 02:00:12
>>677
買えよ。
0681デフォルトの名無しさん2006/12/07(木) 02:04:43
俺も買わずに図書館に入れてもらった。
みんなが読めるようにした方がいいだろ。
0682デフォルトの名無しさん2006/12/07(木) 03:45:36
よく図書館で借りるだけで気が済むね。
言語の入門書なんて、一番手元に置いておきたい類の本じゃないかな?

あ、もしかして借りたままなのか(wwww
0683デフォルトの名無しさん2006/12/07(木) 08:22:57
入門書は立ち読みで十分
0684デフォルトの名無しさん2006/12/07(木) 11:27:41
Python Workshop 04のレポート
http://www.kmonos.net/wlog/68.html#_0134061207

このページの筆者は、今年のICFP国際プログラミングコンテストで準優勝した
東大の学生さん。
http://itpro.nikkeibp.co.jp/article/NEWS/20060927/249198/

みんPyでPythonを知ったらしい。
デコレータでメモワイズができるとか、ramdomモジュールが状態を再現できる
のが良いとか、着眼点が面白いと思った。
まあ、みんPyにはデコレータは載ってなかったけどね。
0685デフォルトの名無しさん2006/12/07(木) 12:01:36
kuma-
0686Python初心者(復活)2006/12/07(木) 12:31:13
>>678
いや正しい?ハマり方は、
def makeZero():
  return 0
print makeZero() and 'Zero' or 'Not Zero'
じゃなかろうか?
0687Python初心者(復活)2006/12/07(木) 12:33:17
>>682
>あ、もしかして借りたままなのか(wwww
さすが経験者ですねぇ、良くご存知で(WWWWWWWWWW

>>684
>http://itpro.nikkeibp.co.jp/article/NEWS/20060927/249198/
これからたどって
http://itpro.nikkeibp.co.jp/article/NEWS/20061204/255920/
を見つけた。
RoR以来、決め打ちWebフレームがすっかり流行ですよね。
RoRが10分、上記Seasar2のChuraが3分、Djangoだと
何分で出来るんですかねぇ?
0688デフォルトの名無しさん2006/12/07(木) 12:50:12
Python初心者には学ぶ姿勢が感じられない。ただの煽り厨。
0689デフォルトの名無しさん2006/12/07(木) 13:02:53
まあそんなに気にするなよ。
誰もがあんたみたいに賢く能率がいいわけじゃない。
それに、話題の提供にはなっているしね。
0690デフォルトの名無しさん2006/12/07(木) 13:07:01
何でこんなFAQ中のFAQがこんなに長引くんだ?
ttp://www.python.org/doc/faq/programming.html#is-there-an-equivalent-of-c-s-ternary-operator

>>686
正確にいうと「条件が真の場合に、0やNoneなどPythonでは偽とみなされる値を返したいとき」に
and/orによる擬似3項演算はうまくいかない。

0 if True else 1 と同じ動作を期待して True and 0 or 1 と書くのは NG、ということ。

>>662
> 三項演算子はandとorの組み合わせで代用可能だと、
> どこかで読んだ覚えがある。

「代用可能」とだけ書いてあるとしたら不十分。
上記FAQのように「代用可能なこともある。ただし云々」となっていないとハマる可能性大。
0691デフォルトの名無しさん2006/12/07(木) 18:58:32
>>687
慣れ合おうとするなよ。
キモ過ぎ。
0692デフォルトの名無しさん2006/12/07(木) 20:14:56
>>691
図書館の職員ですか?wwwwwwwww
0693デフォルトの名無しさん2006/12/07(木) 20:28:11
ttp://omake.accense.com/wiki/PythonIntroLogicalAnd

("or"の説明のとこ)
>左辺が真(False/0/""以外)なら、右辺の評価(実行)をせずに、左辺の値を返す。
>    右辺の評価を行わないのが重要。
>    「真を返す」のではなくて、右辺の値をそのまま返すのが重要。
説明はわかりやすいけど、返すのは左辺の値じゃ?
0694デフォルトの名無しさん2006/12/07(木) 20:46:13
>>692
どうでもいいけど、はやく本返せよ。
はがき送っておいただろ。
0695デフォルトの名無しさん2006/12/07(木) 20:50:44
>>693
そだね。バグレポするべし。
0696デフォルトの名無しさん2006/12/07(木) 23:32:38
>>694
どうでもいいなら返しません
0697デフォルトの名無しさん2006/12/08(金) 00:45:56
>>687
RoRはインストール含めて10分って言ってた気がしたけど、
Churaもインストールから始めたら何分なんでしょうね。
0698デフォルトの名無しさん2006/12/08(金) 01:09:38
早いだけの奴は嫌われるよ。
0699デフォルトの名無しさん2006/12/08(金) 02:55:05
いまさらだけど、デコレータって、クラスの中以外でも使えるのね。
単純だけど、ものすごく応用範囲が広そうだ。
考えた人は賢いなあ。
0700デフォルトの名無しさん2006/12/08(金) 03:15:59
デコレータは初めて見たとき、アスペクト指向っぽい考え方だなぁ、と思った。
デコレートの情報をクラスから分離できたり、
クラスのメソッドを一括でデコレートするようにできたりすれば面白そう。
0701デフォルトの名無しさん2006/12/08(金) 10:06:57
functoolもよろしく
0702デフォルトの名無しさん2006/12/08(金) 11:22:11
ttp://foma-zakki.cocolog-nifty.com/zakki/2006/12/python_books_py_1f47.html
0703デフォルトの名無しさん2006/12/08(金) 11:29:17
これはひどい
0704デフォルトの名無しさん2006/12/08(金) 11:34:34
これはひどい
0705デフォルトの名無しさん2006/12/08(金) 12:07:33
今はこの本が一番評判いいみたいだよ
http://www.amazon.co.jp/Core-Python-Programming-Wesley-Chun/dp/0132269937/
0706デフォルトの名無しさん2006/12/08(金) 12:08:15
↓繋がるけど何も表示されない

まとめ wiki
ttp://www7a.biglobe.ne.jp/~yasozumi/python/wiki/
0707デフォルトの名無しさん2006/12/08(金) 12:09:48
しっぱい
0708デフォルトの名無しさん2006/12/08(金) 12:35:10
長い時間かかる処理の間何も表示しないのも微妙だなと思って
手動で止めるまで標準入力にピリオドを表示させるのを意図して作ったんですけど

import sys, time, threading

def do_something():
 time.sleep(10) #何か長時間かかる処理...

class myThread(threading.Thread):
 alive = True
 
 def run(self):
  while self.alive:
   sys.stdout.write('.')
   time.sleep(1)
 
 def kill(self):
  self.alive = False

t = myThread()
print '開始',
t.start()
do_something()
t.kill()
print '終了'

こんな感じで問題ないですかね?
0709Python初心者(復活)2006/12/08(金) 13:04:57
>>699,700
デコレーターはシンプルな方から逆に考えるとその本質が
掴みやすい。
1.一番簡単な直接記述例(3行):
print 'Hello'
print 'Python'
print 'Good Bye'
2.関数化した例(5行):    
def say_name():
  print 'Hello'
  print 'Python'
  print 'Good Bye'    
say_name()
3.夫々を関数化した例(9行):
def greeting1():
  print 'Hello'
def greeting2():
  print 'Good Bye'  
def say_name():
  greeting1()
  print 'Python'
  greeting2()
say_name()
0710Python初心者(復活)2006/12/08(金) 13:06:17
4.そしてこれがデコレーター(15行)!
def deco1(func):
  def greeting1():
    print 'Hello'
    func()
  return greeting1
def deco2(func):
  def greeting2():
    func()
    print 'Good Bye'
  return greeting2
@deco1
@deco2
def say_name():
  print 'Python'
say_name()
デコレーターとはシンプルに書けることを隠蔽化と
汎用化のため、わざわざ複雑に構造化しているに
過ぎないのではなかろうか?
上記の1項は極端にしても普通は2または3項の
書き方で十分ではないかと思うが…
0711デフォルトの名無しさん2006/12/08(金) 13:09:07
>>702
>ttp://foma-zakki.cocolog-nifty.com/zakki/2006/12/python_books_py_1f47.html

「しっぱい」に載っている間違った記述についてだが。

>オブジェクトの属性のうち、オブジェクトにピリオド「.」を続けることで アクセスすることができるものを「メソッド」といいます。

著者タソは、Pythonというか、オブジェクト指向の基本が分かってないのではないかと推測。
まさに三流。
まさに駄本。
0712デフォルトの名無しさん2006/12/08(金) 14:43:47
一応、サポートページに正誤表が載っているが誤植が多すぎないか。

ttp://www.trirhino.com/books/ppyerrata

みんPyも誤植が多い。

ttp://coreblog.org/ats/stuff/minpy_support/errata/

みんPyといい、しっPyといい、ブログで自慢話を書く暇があるなら、
もうすこしまともな本を書け。
0713デフォルトの名無しさん2006/12/08(金) 15:04:42
参考までに。

ttp://www.longtail.co.jp/errata/
「プログラミング言語C++第3版」にはこのくらいの誤植がある。
誤植は,ページ数に比例して紛れ込むものなんじゃないかと思う。

ただし,711みたいに,事実誤認とか間違った内容を書くことは誤植とは別だと思う。
はっきり言うと恥ずかしい。
0714デフォルトの名無しさん2006/12/08(金) 15:33:27
Pythonなんかやってる方が恥ずかしい
Rubyやれよ売国奴が
0715デフォルトの名無しさん2006/12/08(金) 15:39:22
コンピュータ関連書籍を買うときはまず索引の充実度をチェックするのだが、
実践Pythonのやつはヒドすぎ。索引無いも同然。ほかの内容見ずにすぐ棚に戻した。
0716デフォルトの名無しさん2006/12/08(金) 15:41:09
Windownなんかやってる方が恥ずかしい
超漢字やれよ売国奴が
0717デフォルトの名無しさん2006/12/08(金) 15:42:54
>>716
しまったキー入力間違えた…orz
0718デフォルトの名無しさん2006/12/08(金) 15:44:55
>>710
道具の選び方が悪いだけ。君がしきりに主張していた「最初のnextが邪魔」
という件には有益では?「鉈で刺身が切れない」とごねるのと大差ない希ガス。
0719デフォルトの名無しさん2006/12/08(金) 15:46:52
煽りにマジレスかこ悪い。
0720デフォルトの名無しさん2006/12/08(金) 15:54:24
>>716
これが噂の誤植か。
首を吊って氏ねや。
0721デフォルトの名無しさん2006/12/08(金) 16:13:13
>>710
この手の抽象化は基本的に、重複するコードを分かりやすくまとめるためにあ
るのだから、元のコードに重複が無ければ、抽象化のご利益には預かれないと
思う。
0722デフォルトの名無しさん2006/12/08(金) 16:29:11
>>684 のリンク先に影響を受けて、デコレータでメモワイズを実装してみた。
「メモワイズ」って偉そうな名前だけど、要するに戻り値のキャッシュ。

#メモワイズ関数
def memoize(func):
    memo = {}
    def wrapper(x):
        # return memo.setdefault(x, func(x))
        if x in memo:
            return memo[x]
        else:
            return memo.setdefault(x, func(x))
    return wrapper

処理対象には、再帰の問題にはありがちだけど、フィボナッチ関数。
fn = f(n-1) + f(n-2), f2 = f1 = 1 で定義される奴。

#フィボナッチ関数
@memoize
def fib1(x):
    if x <= 2:
        return 1
    else:
        return fib1(x - 1) + fib1(x - 2)

fib() の定義に、@memoize が無い場合とある場合で比較してみたら、
素晴らしい高速化を実感できた。
デコレータいいねえ。
0723デフォルトの名無しさん2006/12/08(金) 16:31:39
>>721
そうだね。特にある関数にreturnが複数あって、その関数が何回も呼ばれている
場合(入口も出口も複数ある場合)その関数の挙動をデバッグしたいときなんか
威力を発揮する。

def decorate(f):
    def wrap(foo, boo):
        print "foo=%d, boo=%d" % (foo, boo)
        ret = f(foo, boo)
        print "ret=%d" % ret
        return ret
    return wrap

@decorate
def func(foo, boo):
    return foo * boo

func(func(3,2), func(4,5)) + func(2,1)

まあ、これはつまらない例だけど、こんな感じで挙動を追跡できる。
0724デフォルトの名無しさん2006/12/08(金) 16:32:42
微妙にかぶったorz
0725デフォルトの名無しさん2006/12/08(金) 16:35:31
自分のマシンだと、@memoizeなしでは、x=36あたりですごく重くなる。
@memoizeつきだと、スタックがあふれるまで(x=500)繰り返しても一瞬。

まあこれは特殊な例だけど、
DBやネットワークから値を取得する関数などに使えば便利かも知れない。
07267222006/12/08(金) 16:43:39
あ、かぶったというか、レスが混じってしまった。すまん。
しかも722に貼ったコード、清書する前の版だった。
memoize()に変なコメントアウトがあるし、fib()がfib1()になってる。
重ね重ねすまん。

実はmemoize関数内の wrapper 関数は、最初は if文が無くて、コメントアウ
トされてるsetdefault()しか元々存在していなかった。
その版だとかえって遅くなってしまった。当たり前だけど、Pythonは正格評価
なのだった。
0727デフォルトの名無しさん2006/12/08(金) 17:54:51
scipyがようやく2.5対応に
0728デフォルトの名無しさん2006/12/08(金) 18:03:12
Enthought Edition が2.5に対応するのはいつごろになるかなあ。
待ち遠しい。
http://code.enthought.com/enthon/
0729デフォルトの名無しさん2006/12/08(金) 21:13:40
2.5どころか、職場のサーバのPythonが2.3で、デコレータすら使えない俺は負け組。
0730デフォルトの名無しさん2006/12/08(金) 21:17:09
>>729
そんなことはない.2.3で使えないのはデコレータじゃなくてデコレータ構文.
0731デフォルトの名無しさん2006/12/08(金) 21:43:51
えー、この構文が使えないのはいやだなあ。

@decorator
def func(...):
...
...

これが

def func(...):
...
...
func = decorator(func)

こうなっちゃうんじゃ、相当ガッカリだよ。
0732デフォルトの名無しさん2006/12/08(金) 23:00:39
実pyを立ち読みしてきた。
レイアウトが確かに異様に読みやすい。
あと、対話型実行例だらけなので、何を
やってるか(自分的には)把握しやすい。
ので、「読みやすい」本ではあるかなと思た。
ただ、変数とか、関数とかの説明が初心者向け
ではない(この辺はみんpyの方がかなり秀逸(と思う)
なので、ほんとうの初心者に薦める本ではないかなという感じ。
ところどころhackっぽいネタが載ってたりするので、
時間つぶしに読むにはそれなりに楽しい。
何か目的を持って情報を取り出そうとするとイライラする本かもしれないけど。
0733デフォルトの名無しさん2006/12/08(金) 23:13:39
>>732
買えよ。
0734デフォルトの名無しさん2006/12/08(金) 23:15:48
しかし初めてじゃないのか
読んだという触れ込みでのレポは
0735デフォルトの名無しさん2006/12/08(金) 23:37:36
>>733
初心者には難し過ぎて価値がない.
中〜上級者には立ち読みする価値しかない.

そんな書籍なんだろう.
0736デフォルトの名無しさん2006/12/09(土) 00:32:46
>>735 どうした?ママの愛情が足りなかったのか?
0737デフォルトの名無しさん2006/12/09(土) 00:47:36
お前がどうしたんだw
0738デフォルトの名無しさん2006/12/09(土) 00:48:13
>>708 の時間経過表示が面白かったんで、デコレータ化してみたよ。

class myThread は>>708をそのまま使わせていただいて、

def sandgrass(func):
    """時間経過を表示させるデコレータ
    """
    def wrapper(*args, **keys):
        t = myThread()
        print '開始',
        t.start()
        ret = func()
        t.kill()
        print '終了'
        return ret

    return wrapper

@sandgrass
def do_something():
    """何か時間のかかる処理。
    """
    time.sleep(10)

これってすっごく実用的じゃない?
デコレータって言うと、前処理と後処理というイメージがあったけど、
別スレッドで同時進行というのもアリだなあ。
0739デフォルトの名無しさん2006/12/09(土) 00:50:05
>>736
Zope関係者乙。
みんPyの作者に粘着すれば気分が晴れるかも知れないぞ(WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
0740デフォルトの名無しさん2006/12/09(土) 00:54:33
Amazonより

みんPy
>初心者にもわかりやすく解説

実Py
>Pythonは経験したことがないが、何らかのプログラミング言語に
>ついては触れてみたことがある方

実Pyは初心者向けじゃないんじゃ?
07417382006/12/09(土) 00:59:22
あちこちバグがあったので修正。

def sandgrass(func):
    u"""時間経過を表示させるデコレータ
    """
    def wrapper(*args, **keys):
        t = myThread()
        print '開始',
        t.start()
        ret = func(* args, **keys)
        t.kill()
        print '終了'
        return ret
    wrapper.__name__ = func.__name__
    wrapper.__doc__ = func.__doc__

    return wrapper

元のままだと、ヘルプが機能しなくなってた。
あと、funcに引数を渡してなかった。
デコレータって、使うのは簡単だけど、作るのは結構気をつかうのね。
07427382006/12/09(土) 01:06:30
>>741
「砂時計」は、sandg[l]ass でした。
直すんだったらまずそれを直すべきでした。なんかダメダメ。
0743デフォルトの名無しさん2006/12/09(土) 01:25:45
>>738
おい、@sandglass を、>>722 のフィボナッチ関数に付けたら、
えらいことになったぞ。
Pythonでは再帰は鬼門なんだろうか。
0744デフォルトの名無しさん2006/12/09(土) 01:28:25
あんまり使うなとは言われたことあるなぁ。Cとは違うのか…。
0745デフォルトの名無しさん2006/12/09(土) 01:42:35
>>741
つ functools.wraps
0746デフォルトの名無しさん2006/12/09(土) 01:44:22
考えてみたら、末尾再帰をループに変換もしてくれないし、
スタックもたった500であふれてしまうみたいだしなあ。

Stackless Python方面の人は、再帰を多用していたりするんだろうか。
デコレータと組み合わせたときの不具合で困ったりしてないのかな。
0747デフォルトの名無しさん2006/12/09(土) 01:49:31
>>745
おお、2.5にはそんなものが!
http://docs.python.org/lib/module-functools.html
Enthought Edition も2.5に早く対応してくれ!
0748デフォルトの名無しさん2006/12/09(土) 01:49:51
Cの場合、フィボナッチ数列を再帰で解いちゃいけないってどこかで読んだ記憶が・・・
簡潔には書けるけど、オーバーヘッドがものすごく大きいとか書いてあったような。
0749デフォルトの名無しさん2006/12/09(土) 02:02:25
>>738
おーい、@sandglass だけど、
モジュールをリロードしたあと、処理の実行を Ctl+C で中断すると、
「...」がいつまでも出現しつづけるぞ。
どうしたら消えるんだ、これ。

まあ、オリジナルの >>708 のでも同じみたいだけど。

あと、砂時計だったら、hourglass の方が普通じゃないか?
0750デフォルトの名無しさん2006/12/09(土) 02:08:31
>>748
オーバーヘッド云々という話ではなく、計算量をちゃんと見積もれば明白。
別にCだからとかいう話ではない。再帰+キャッシングが有用な例題としては教科書的。
0751デフォルトの名無しさん2006/12/09(土) 02:12:00
>749
def wrapper(*args, **keys):
 try:
  t = myThread()
  print '開始',
  t.start()
  ret = func(* args, **keys)
  print '終了'
  return ret
 except:
  t.kill()
  raise
(略)

はどうだろう
0752デフォルトの名無しさん2006/12/09(土) 02:14:14
>>740
>実Pyは初心者向けじゃないんじゃ?

俺読んだけど,なんか中途半端な内容だった。
初心者向けじゃないとしたら,誰向けなんだ? 表紙に萌えるオタク向け?
用語の不統一,微妙なサンプル,間違った解説。
このスレみてて,そう思ったのは俺だけじゃないんだと分かってホッとした。
07537512006/12/09(土) 02:15:30
すまん間違えた
07547512006/12/09(土) 02:19:00
とりあえずこれで。

def wrapper(*args, **keys):
 try:
  t = myThread()
  print '開始',
  t.start()
  ret = func(* args, **keys)
  return ret
 finally:
  t.kill()
  print '終了'

07557492006/12/09(土) 02:30:13
>>754
うまく行くようになったよ。ありがとう!
なるほど try - finally か。
0756デフォルトの名無しさん2006/12/09(土) 03:25:28
デコレータは、クラスに付けることはできないのね。
付けられるのは関数にだけみたいだ。
なんか残念。
0757デフォルトの名無しさん2006/12/09(土) 03:40:01
クラスには継承がある
0758デフォルトの名無しさん2006/12/09(土) 03:43:29
だけど、デコレータをちょこっとクラス定義の前につけるだけで
クラスの挙動を変えられたら便利だと思うけどなあ。
0759デフォルトの名無しさん2006/12/09(土) 03:44:04
デコレータと関係ないけど、
フィボナッチ数列を返すジェネレータを作ってみた。
再帰じゃなくてループ。
引数 max は項の数の最大値。

def fib(max):
    f_1, f_2 = 1, 1

    for i in range(1, max+1):
        if i <= 2:
            yield 1
        else:
            f = f_1 + f_2
            yield f
            f_1 , f_2 = f, f_1
0760デフォルトの名無しさん2006/12/09(土) 05:32:07
客観的に評価してみた(出版順)

はじPyはどうみても冗長
みんPyは独り善がり
しっPyは受け狙い

ちなみに俺推奨は公式ドキュメント(含むリファレンス)→DiveIntoPython→本番
0761デフォルトの名無しさん2006/12/09(土) 05:44:07
>>759 ちょい枝切り
def fib(max,a=0,b=1):
  for i in range(max):
    yield b
    a,b=b,a+b
0762デフォルトの名無しさん2006/12/09(土) 06:16:04
>>760
evalが壊れてるみたいだから、インストールし直した方が良い。
0763デフォルトの名無しさん2006/12/09(土) 09:27:22
最高のPython本は760が出版する。
2chでくだを巻くしか脳のない、ルサンチマンの760だけど
最高のPython本を書けるのは760だけだ。
 
 
 
 
 
 
 
 
 
出版予定は西暦3000年です。
0764デフォルトの名無しさん2006/12/09(土) 09:50:29
この程度のセンスでは松竹にすら入れない。
0765デフォルトの名無しさん2006/12/09(土) 11:23:53
windows で刻一刻と成長していく log file を見て

更新されたら更新されたぶん(追加された行)だけ
処理対象にしたい
(とりあえず tail -f のクローンを書きたい)

って言うときはどうするのでしょう?

while True:
newdata = f.read()
...
time.sleep(1)

で polling するしかない?
■ このスレッドは過去ログ倉庫に格納されています